一一


私信TA

用户名:dotcpp0663990

访问量:361

签 名:

等  级
排  名 1021
经  验 3314
参赛次数 0
文章发表 5
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

注意事项:

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

  评论区

  • «
  • »