解题思路:

注意事项:

对于题目中提到的可能有多组输入,可以用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;

}


点赞(1)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论