1、编写程序,从键盘输入正整数n代表字符串的行数(0<n<100000),然后再输入n行字符串,每行字符串长度小于100个字符,可能包含空格。将这些字符
串按从小到大的顺序输出。温馨提示,在线考试自动评测系统使用的是GCC48.5片本的编译器,从键盘读取一行字符串的函数建议使用fgets,本题中可以为fgets(t100stdin),其中t是保存读入字符串内存空间的首地址。输出一行字符串的函数建议使用fputs,本题中可以为fputs(tstdout);使用字符串比较库函数时,标准只是规定三个值:小于零,零,大于零。具体是什么值编译器自已定的,所以编程时候判断小于或者大于时,不能判断是否等于-1或者
1。
例如:输入3
bbbbbbbb CCCC aaaaa
输出 aaaaa
bbbbbbbb CCCC
如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int strcompare(char* s1,char* s2)
{
while(*s1 != '\0' && *s2 != '\0')
{
if(tolower(*s1) > tolower(*s2))
return 1;
else if(tolower(*s1) < tolower(*s2))
return -1;
else
{
s1++;
s2++;
}
}
if(*s1 == '\0' && *s2 == '\0')
return 0;
else if(*s1 != '\0' && *s2 == '\0')
return 1;
else
return -1;
}
int main()
{
int i,j,n;
char p[10000][101];
char tmp[100];
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
fgets(p[i],100,stdin);
//字符串比较
for (i=0;i<n-1;i++)
{
for (j=0;j<n-i-1;j++)
{
if (strcompare(p[j],p[j+1])>0)
{
strcpy(tmp,p[j]);
strcpy(p[j],p[j+1]);
strcpy(p[j+1],tmp);
}
}
}
for (i=0;i<n;i++)
{
fputs(p[i],stdout);
}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!