对输入的国家名字按字母顺序排序(C语言)

如题所述

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int n,i,j;
char (*p)[10],a[10];
printf("请输入你要输入的国家个数:");
scanf("%d",&n);
p=(char (*)[10])calloc(n,sizeof(char *[10]));
printf("请输入国家的名字\n");
for (i=0;i<n;i++)
scanf("%s",*(p+i));
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if (strcmp(*(p+i),*(p+j))>0)
{
strcpy(a,*(p+i));
strcpy(*(p+i),*(p+j));
strcpy(*(p+j),a);
}
printf("排序后为\n");
for(i=0;i<n;i++)
printf("%s\n",*(p+i));
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-28
比较字母吧,先比较第一个,相同的话再比较的二个,一直类似,不同的话按照字母的ASCII码的大小进行排列。
第2个回答  2012-07-28
好歹你先写点东西啊
第3个回答  2018-02-28
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
 int n,i,j;
 char (*p)[10],a[10];
 printf("请输入你要输入的国家个数:");
 scanf("%d",&n);
 p=(char (*)[10])calloc(n,sizeof(char *[10]));
 printf("请输入国家的名字\n");
 for (i=0;i<n;i++)
 scanf("%s",*(p+i));
 for(i=0;i<n;i++)
 for(j=i+1;j<n;j++)
 if (strcmp(*(p+i),*(p+j))>0)
 {
 strcpy(a,*(p+i));
 strcpy(*(p+i),*(p+j));
 strcpy(*(p+j),a);
 }
printf("排序后为\n");
for(i=0;i<n;i++)
 printf("%s\n",*(p+i));
return 0;
}
请输入你要输入的国家个数:3
请输入国家的名字
china
amreican
canada
排序后为
amreican
canada
china
Press any key to continue

相似回答