解题思路:
注意事项:
对于题目中提到的可能有多组输入,可以用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语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复