如有报错,是本人学艺不精献丑了,给大家当个反面教材
1.将十个字符串写入一个10行20列的数组。(此处列数不一定是20,要看输入字符串最长的长度+1,为了保险我选择了20)
2.将每行的第一个元素(即此处的s[i][0])的地址赋予一个指针数组(即此处的a[i])
3.用冒泡排序法进行排序,此处使用了strcmp函数进行比较,相邻指针数组元素大小,即比较了其所指代的二维数组中一整行的元素(可以理解为按字母表顺序进行了比较,有相同元素则比较下一个字母)
4.最后以字符串的形式(%s)输出指针数组即可
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char s[10][20];
int i, j;
char *a[10],*x[1];
printf("输入十个国家英文名\n");
for(i=0;i<10;i++){//将字符串写入二维数组s
scanf("%s",s[i]);
}
for(i=0;i<10;i++){//将每行开头的地址赋予指针数组
a[i]=&s[i][0];
}
for(i=0;i<10;i++)//冒泡排序法排序指针数组a
{
for(j=0;j<9;j++){
if (strcmp(a[j],a[j+1])>0){
x[0]=a[j];
a[j]=a[j+1];
a[j+1]=x[0];
}
}
}
printf("排序为:");
for(i=0;i<10;i++){//遍历数组输出
printf("%s ",a[i]);
}
system("pause");
return 0;
}