C语言入门:字符串排序

来源:互联网 发布:淘宝网御龙在天激活码 编辑:程序博客网 时间:2024/05/22 06:20

字符串排序:输入5个字符串,安有小到大的顺序输出。试编写相应程序。


#include<stdio.h>                           //字符串排序实验代码#include<stdlib.h>#include<string.h>int main(){char *a[5],ch,*mid;                     //中间变量mid存放字符串int count,i,j;                           //计数器用于动态输入字符串int T,k=0;                             //冒泡排序的优化变量T,程序退出变量kwhile(1){printf("\n请输入5个字符串:(字符串中不含任何字符则退出)\n");for(i=0;i<5;i++)                                    //输入循环{a[i]=(char *)malloc(sizeof(char));  //使用动态内存分配给字符串指针分配空间count=0;while ((ch=getchar()) != '\n')      //动态输入字符串不因数组大小而限制字符个数{a[i][count]=ch;count++;a[i]=(char *)realloc(a[i],(count+1)*sizeof(char)); }a[i][count] = '\0';if(count==0)                    //count=0说明此字符串未输入字符{k=1;break;}}if(k)                                             //退出程序判断{printf("程序运行结束\n");break;}for(i=4;i>0;i--)                                     //冒泡排序{T=1;for(j=0;j<i;j++)if(strcmp(a[j],a[j+1])>0){mid=a[j];a[j]=a[j+1];a[j+1]=mid;T=0;                   //执行if语句,则T=0,未执行则T=1} if(T)                           //T=1说明字符串已排好序,不必执行后面循环break;}printf("已排序的字符串为:\n");for(i=0;i<5;i++)                                      //输出循环printf("%s\n",a[i]);for(i=0;i<5;i++)    free (a[i]);}return 0;}


这里用了动态分配内存的方法输入字符串,这样就不会因为数组的限制而限制字符串的输入个数,也不会因为数组定义范围太小而出现字符溢出的情况。

(不过并没有什么用,可以直接设置一个大数组存放字符即可)



运行结果:






原创粉丝点击