解题思路:
注意事项:
对于题目中提到的可能有多组输入,可以用while(scanf("%d",&n)!=EOF)解决;
题目中还提到每个字符串以‘\n’结束,说明其中可能会含有空格,不能用scanf函数进行输入,应该用gets函数进行输入。
参考代码:
#include<stdio.h>
#include<string.h>
int main(){
int n;
char str[1000][1000];
int sum;
char temp[1000];
while (scanf("%d", &n) != EOF) {
getchar(); //用来清楚缓存区的回车
sum = 0; //重置sum,保证每次循环sum都从0开始计起
for (int i = 0; i < n; i++) {
gets(str[i]); //输入字符串
sum++; //记录输入的字符串的个数
if (strcmp(str[i], "stop")==0) { //判断每次输入的字符串是不是stop
sum = sum - 1; //如果是stop,又因为不会输出stop,所以字符串的总数要减少一个
break; //结束本次循环
}
}
for (int i = 0; i < sum; i++) {
for (int i = 0; i < sum-1; i++) {
int len1 = strlen(str[i]); //根据各字符串的长度对字符串进行排序
int len2 = strlen(str[i+1]);
if (len1 > len2) {
strcpy(temp,str[i]);
strcpy(str[i],str[i+1]);
strcpy(str[i+1],temp);
}
}
}
for (int i = 0; i < sum; i++) {
printf("%s\n",str[i]); //直接输出排序好的字符串
}
}
return 0;
}
0.0分
1 人评分
C二级辅导-温度转换 (C语言代码)浏览:2341 |
C语言训练-排序问题<2> (C++代码)(sort函数)浏览:1579 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:1205 |
C二级辅导-等差数列 (C语言代码)浏览:1216 |
字符串对比 (C语言代码)浏览:1413 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:668 |
矩阵加法 (C语言代码)浏览:1722 |
出圈】指针malloc版浏览:355 |
剪刀石头布 (C++代码)浏览:1711 |
小九九 (C语言描述,不看要求真坑爹)浏览:985 |