本题要求编写程序,读入5个字符串,按由小到大的顺序输出。
输入格式:
输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。
输出格式:
按照以下格式输出排序后的结果:
After sorted:
每行一个字符串
输入样例:
red yellow blue black white
输出样例:
After sorted:
black
blue
red
white
yellow
代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
char s[5][100];
char temp[100];
int i,j;
for(i=0;i<5;i++)
{
scanf("%s",s[i]);
}
for(i=1;i<5;i++)
{
for(j=0;j<5-i;j++)
{
if(strcmp(s[j],s[j+1])>0)
{
strcpy(temp,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],temp);
}
}
}
printf("After sorted:\n");
for(i=0;i<5;i++)
{
if(i==4)
printf("%s",s[i]);
else
printf("%s\n",s[i]);
}
}
排序字符串的关键是每个字符串的首字母,根据ASC||码排序,我们要将每个字符串的首字母记录下来,那怎么记录呢?就要用到我们学的strcmp--字符串比较函数。函数strcmp()中的参数s1和s2可以是字符数组名或字符串常量。函数strcmp(s1,s2)返回一个整数,给出字符串s1和s2的比较结果:①若s1和s2相等,返回0;②若s1大于s2,返回一个正数,③若s1小于s2,返回一个负数。设s1和s2都是字符串,在c语言中,比较的是两个字符串的起始地址。所以,我们可以利用这个函数来解决我们的问题。然后用strcpy函数,用冒泡排序的思想进行排序。