#include<stdio.h>
struct Name{
char name[8];
};
void main()
{
struct Name NAME[5];
int i,j,k;char t[8];
printf("请输入五个国家的英语名:\n");
for(i=0;i<5;i++)
scanf("%s",&NAME[i].name);
printf("\n");
for(i=0;i<5;i++)
for(j=0;j<5-i;j++)
if(NAME[j].name[0]>NAME[j+1].name[0])//大数下沉
{
for(k=0;k<8;k++)
t[k]=NAME[j].name[k];
for(k=0;k<8;k++)
NAME[j].name[k]=NAME[j+1].name[k];
for(k=0;k<8;k++)
NAME[j+1].name[k]=t[k];
}
printf("五个国家名按字母顺序排列输出:\n");
for(i=0;i<5;i++)
printf("%s\n",NAME[i].name);
}
可是从大到小,就能正常输出,我使用了strcpy了,可是还一样的
追答你只是比较字符串的第一个字符 name[0], 这里不是0吗,就是第一个字符,譬如说如果你输入:
Name2
Name1
,那排序就错了
什么strcpy? 我说的是strcmp
估计你程序可能还有逻辑问题,我就先懒得看,等你改了strcmp再发新代码才帮你看看吧