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
编写程序,从键盘输入正整数
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 技术专家团-小桥流水 2021-12-26 10:36关注
如下:
#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报