输入n个字符串,用一个函数对它们进行排序。
#include <stdio.h>
#include <string.h>
void sort(char s[][100],int n);
int main()
{
int n,i;
scanf("%d\n",&n);
char s[100][100];
for(i=0;i<n;i++)
gets(s[i]);
sort(s,n);
for(i=0;i<n;i++)
puts(s[i]);
}
void sort(char s[][100],int n)
{
int i,j;
char *x,t[100];
x=t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
{
if(strcmp(s[j],s[j+1])>0)
{ strcpy(x,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],x);
}
}
}
写这个代码的时候发现了一个问题。
scanf("%d",&n);
for(i=0;i<n;i++)
gets(s[i]);
我给n赋值为5,可是当我输入的时候却只能输入4个字符。
然后我把gets改为scanf,可以输入5个字符。
这让我百思不得其姐。
后来发现,当给n赋值以后按回车符scanf不会读取。
而gets会直接读取这个。所以让我误以为循环少了一次,而输出的时候也会换行一次。