字典序的问题
打个比方说,我输入一个数字,代表要排序的单词数,然后我输入单词,要按照字典序排好。
例如:
3
China
America
Canada
输出
Amercia
Canada
China
以下是代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char country[105][105];
char temp[105];
int i,j,num;
while(scanf("%d",&num)!=EOF)
{
for(i=0;i<num;i++)
{
scanf("%s",country[i]);
}
for(i=0;i<num;i++)
{
for(j=i;j<num;j++)
{
if(strcmp(country[i],country[j])>0)
{
strcpy(temp,country[i]);
strcpy(country[i],country[j]);
strcpy(country[j],temp);
}
}
}
for(i=0;i<num;i++)
{
printf("%s\n",country[i]);
}
}
return 0;
}
这个题有一些我要唠嗑一下的东西,注意,在第二重循环里,也就是for(j=i;j<num;j++)这里,一开始我写的是j=i+1;j<=num;但是OJ系统给我wa,我思考了一下,我们应该考虑的是从j=i还j=i+1开始进行比较,既然是进行排序,要注意,这里要从第一个字母开始比较,应该为j=i也就是j=0进行比较,当然,这也是现学现卖的一个弊端,思路不够清晰。