C语⾔⼊门:字符串排序字符串排序:输⼊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,程序退出变量k
while(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;
c语言如何创建字符串数组
}
这⾥⽤了动态分配内存的⽅法输⼊字符串,这样就不会因为数组的限制⽽限制字符串的输⼊个数,也不会因为数组定义范围太⼩⽽出现字符溢出的情况。
(不过并没有什么⽤,可以直接设置⼀个⼤数组存放字符即可)
运⾏结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。