| 
 | 
 
 
发表于 2023-4-24 10:16:03
|
显示全部楼层
 
 
 
 本帖最后由 isdkz 于 2023-4-24 10:54 编辑  
 
[b]你好!我发现了你代码中的一些问题。我会对代码进行修改并解释修改的原因。 
 
首先,你需要在每次输入一组字符串时将索引重置为零。在代码中,你应该使用`s[i]`,而不是`s`。另外,`strcpy(s,p)`应该改为`strcpy(s[i],p)`,因为你要复制到`i`行。 
 
修正后的代码如下: 
 
- #include<stdio.h>
 
 - #include<string.h>
 
 - int main()
 
 - {
 
 -     char s[100][101], b[1];
 
 -     int i, j, n;
 
  
-     while (scanf("%d", &n) != EOF)
 
 -     {
 
 -         gets(b);
 
 -         for (i = 0; i < n; i++)
 
 -         {
 
 -             char p[101];
 
 -             gets(p);
 
 -             if (strcmp(p, "stop") == 0)
 
 -             {
 
 -                 n = i;
 
 -                 break;
 
 -             }
 
 -             else strcpy(s[i], p);
 
 -         }
 
  
-         for (i = 0; i < n - 1; i++)
 
 -         {
 
 -             for (j = i + 1; j < n; j++)
 
 -             {
 
 -                 if (strlen(s[i]) > strlen(s[j]))
 
 -                 {
 
 -                     char t[101] = {'\0'};
 
 -                     strcpy(t, s[i]);
 
 -                     strcpy(s[i], s[j]);
 
 -                     strcpy(s[j], t);
 
 -                 }
 
 -             }
 
 -         }
 
 -         for (i = 0; i < n; i++) printf("%s\n", s[i]);
 
 -     }
 
 -     return 0;
 
 - }
 
 
  复制代码 
 
这个修正后的代码应该可以解决你遇到的问题。如果还有其他问题,请随时告诉我![/b] |   
 
 
 
 |