输入若于书名,每个书名长度不超过100,将书按ASCII顺序,从小到大排序。输入书名个数不定,直到文件结束为止。将字符串按ASCII码从小到大排序后输出。我这为什么是错的。


#include"stdio.h"
#include"string.h"
int main()
{
    int n,j,i,j1,k;
    char a[100][100],t[100];            
       while(scanf("%s",a[n])!=EOF)
       {
           n++;
       }
    for(i=0;i<n-1;i++)
    {    
        for(j1=i+1;j1<n;j1++)
        {
            if(strcmp(a[i],a[j1])>0)
            {
        strcpy(t,a[i]);
        strcpy(a[i],a[j1]);
        strcpy(a[j1],t);

            }
    }    
    }
  for(i=0;i<n;i++)
  {
      printf("%s\n",a[i]);
  }    
       
   return 0;
}

代码里n 没有初始化值,修改如下,供参考:

#include <stdio.h>
#include <string.h>
int main()
{
    int  n = 0, j, i;
    char a[100][100], t[100];
    while (gets(a[n]) != NULL) //ctrl+Z 结束输入
    {
        n++;
    }
    for (i = 0; i < n - 1; i++)
    {
        for (j = i + 1; j < n; j++)
        {
            if (strcmp(a[i], a[j]) > 0)
            {
                strcpy(t, a[i]);
                strcpy(a[i], a[j]);
                strcpy(a[j], t);
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("%s\n", a[i]);
    }
    return 0;
}