赞
踩
如有报错,是本人学艺不精献丑了,给大家当个反面教材
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;
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。