我原来加上数组b是想记录a中首字母从小到大排列后对应的原来的下标。但是没写好,其实直接将首字母所在的行互换就可以。
这才是我本来想表达的,每行的输出后面跟着改字符串在原数组中的位置。原来的时候只交换下标了,忘了交换字符串。
#include "stdio.h"
void main()
{
char a[5][20];
int i,j,t;
int b[5]={0,1,2,3,4};
printf("please input five countries' names:\n");
for(i=0;i<5;i++)
gets(a[i]);
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(a[i][0]>a[j][0])
{
t=a[i][0];
a[i][0]=a[j][0];
a[j][0]=t;
t=b[i];
b[i]=b[j];
b[j]=t;
}
printf("the array of those five countries now is :\n");
for(i=0;i<5;i++)
printf("%s,%d\n",a[i],b[i]);
}
当然,你这里似乎不想得到其下标的记录。
[
本帖最后由 m456m654 于 2009-10-28 22:06 编辑 ]