c语言中从键盘输入N个字符串,将字符串按从小到大的顺序排列并输出

c语言中从键盘输入N个字符串,将字符串按从小到大的顺序排列并输出,第1张

代码如下:

#define N 10 int main(){char str[N][100]; int i,j; for(i = 0; i < N; i ++)  scanf("%s",str[i]); for(i = 0; i < N-1; i ++) { for(j = i+1; j < N; j ++){ if(strcmp(str[i],str[j])>0) { char temp[100]; strcpy(temp,str[i]); strcpy(str[i],str[j]); strcpy(str[j],temp);} } } for(i = 0; i < N; i ++)  puts(str[i]);}。

运行代码:

执行结果:

扩展资料

在C语言编程中,常常需要对字符串比较和排序,经常遇到对字符串整体的控制等 *** 作,strcmp 比较str1和str2的大小,而其它的c函数strlen(),字符串拷贝函数strcpy()/strncpy(),字符串比较函数 strcmp(),字符串连接函数strcat()/strncat()等,都可以帮助我们快速方便的对字符串 *** 作。

参考资料:

-C语言

首先根据插入排序的原理,设计插入排序函数,函数传入参数是字符串数组和字符串数组的长度,函数无返回值。然后输入字符串,调用函数排序,最后输出排序后字符串。

参考代码:

#include<stdioh>

#include<stringh>

#define MAX 1000

void insert(char a,int n)

{

    int i,j;

    char key;

    for(i=1;i<n;i++)//控制需要插入的元素

    {

        key=a[i]; //key为要插入的元素

        for(j=i;j>0 && a[j-1]>key;j--) //查找要插入的位置,循环结束,则找到插入位置

        {

            a[j] = a[j-1]; //移动元素的位置供要插入元素使用

        }

        a[j] = key; //插入需要插入的元素

    }

}

int main()

{

    char a[MAX];

    int n;

    gets(a);//输入字符串

    n=strlen(a);

    insert(a,n);//调用函数排序

    printf("after:\n");

    puts(a);  

    return 0;

}

你代码里有好多错误啊

少分号

少个大括号

关键还有

n没定义

n

是表示字符串长度么

#include

<stdioh>

#include

<stringh>

void

fun(char

a)

{

int

i,j;

char

ch;

//求出字符串有多少个元素

int

n=strlen(a);

for(i=0;i<n;i++)

//冒泡排序法

for(j=0;j<n-1;j++)

{

if(a[j]>a[j+1])

//升序

{

ch=a[j];

a[j]=a[j+1];

a[j+1]=ch;

}

}

}

void

main

()

{

char

a[81];

printf("输入a:\n");

scanf("%s",a);

fun(a);

printf("结果是:\n");

printf("%s\n",a);

}

#include <stdioh>

#include <stringh>

void sortstr(char ,int);

void main()

{

static char proname[]={

"pascal",

"basic",

"cobol",

"prolog",

"lisp"};

int i;

sortstr(proname,5);

for(i=0;i<5;i++)

printf("%s\n",proname[i]);

}

void sortstr(char v[],int n)

{

int i = 0;

int j = 0;

char temp;

for(i = 0; i < n;i++)

{

for(j = i; j < n;j++)

{

if(0 < strcmp(v[i],v[j]))

{

temp = v[i];

v[i] = v[j];

v[j] = temp;

}

}

}

}

给你个思路吧,你能实现小写的排序,编程本身应该难不到你

程序直接分三部分写,小写的排序,大写的排序,数字的排序。这三个部分可以循环完成。

在小写的排序中这样实现:

1搞两个指针从前往后找(不想用指针,直接用整形标记下标也行)

2找到依次两个小写字母,若第一应该在第二之后,交换这两个的位置

3第一指针指向第二个的位置,第二个继续找下一个小写字母,然后重复步骤2到尾部结束。

4记录下小写字母的个数n。以上1-3再重复n-1次。

其实就是针对小写字母做冒泡把非小写字母排除在外不动它就是了。

大写和数字的可以循环完成。

具体实现我就不把代码写出来了,你不明白的再问吧

  

输入10个字符串,并按字母从小到大排序

#include "stdioh"

#include "stringh"

void sort(char array[][20],int n);

main(void)

{

char str[10][20];

int i,j,k,n;

printf("input n (n<=10):");

scanf("%d",&n);

printf("input %d string:",n);

for(i=0;i<n;i++)

gets(str[i]); //输入N个字符串

sort(str,n); //对输入的字符串排序

printf("sort string:\n");

for(i=0;i<n;i++)

puts(str[i]);

return 0;

}

void sort(char array[][20],int n) //定义排序函数

{

char temp[20];

int i,j,k;

for(i=1;i<n-1;i++)

{

k=i;

for(j=i+1;j<n;j++)

if(strcmp(array[k],array[j])>0)

k=j;

if(k!=i)

{

strcpy(temp,array[i]); //字符串交换顺序

strcpy(array[i],array[k]);

strcpy(array[k],temp);

}

}

}

如上源码所示,其实也不难发现,就一个排序函数便可以解决;解决思想,还是交换法;在这里明白字符串数组str[0],便是第一个主的字符串,跟这个2维str[0][20]是一个意思

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/13495648.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存