原题链接:[编程入门]三个字符串的排序
参考代码:
#include <stdio.h> #include <math.h> #include <string.h> void sort(char **p,int n) //用于排序的函数,n代表有几个字符串,要比几次 { char *temp; //中间变量temp int i,j; for(i=0;i<n;i++) //i和j对比,此时的重点在于排列p数组中的顺序 { for(j=i+1;j<n;j++) { if (strcmp(p[i], p[j]) > 0) //比较两个字符串,若前者更大就交换两者的在p中的顺序 //最后按p的顺序输出,对应了从小到大 { temp = p[i]; p[i] = p[j]; p[j] = temp; //交换两个字符串在p中的位置(指针层面) } } } } int main() { int i; char s[3][100]; //3代表3段字符串,100是字符串的最大长度 char *p_s[3]; //这是一个数组,数组里的元素都是指针 char **p; //二级指针p,表示它是一个指向指针的指针 for(i=0;i<3;i++) { gets(s[i]); //这里的s实际是个二维数组,比如说第一次i=0输入的内容是s[0][...] p_s[i]=s[i]; //将s[0], s[1], s[2]找出来,即每句话的首地址,然后给指针数组p_s } p=p_s; //将指针数组p_s的首地址给二级指针p sort(p,3); for (int i = 0; i < 3; i++) puts(p_s[i]); //不能用 puts(p),因为p是一个指针 //不能用 puts(p_s),因为p_s是一个存放指针的数组 //能用 puts(p_s[i]),因为每个 p_s[i]都指向一个字符串 return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复