对5个国家的名称进行排序详细解析
2018-06-18 04:18:33来源:未知 阅读 ()
注:代码通过TDM-GCC4.9.2编译通过
原题:有"China","America","Australia","France","Germany"五个国名。设计一个程序使其按字母顺序进行排序并输出结果。
思路:应用传统的排序方法,将字符串保存在字符数组中进行交换,将使得程序变得复杂,难于编写检查。可以将其都保存在字符串指针数组中。排序时只要套用原来一维数组的排序方法,将两个字符串指针在指针数组中的顺序进行交换,程序就变得十分简单。
设计:编写2个自定义函数:void sort(char *name[])用于排序,void prins(char *put[])用于输出。在main()函数中对字符串进行赋值,并且依次调用两个自定义函数,完成设计。
代码:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define N 5 5 6 void sort(char *name[]) //排序 7 { 8 int i,j; 9 char *sp; //用于临时交换 10 for(i = 0;i < N-1;i++) //利用选择排序法进行排序 11 { 12 for(j = i+1;j < N;j++) 13 { 14 if(strcmp(name[i],name[j]) > 0) 15 { //当name[i]>name[j]时进行交换来排序① 16 sp = name[i]; 17 name[i] = name[i+1]; 18 name[i+1] = sp; 19 } 20 } 21 } 22 } 23 24 void prins(char *put[]) //输出 25 { 26 int i; 27 for(i = 0;i < N;i++) 28 printf("%s ",put[i]); //不能写*put[i]② 29 } 30 31 int main() { 32 char *spa[] = {"China","America","Australia","France","Germany"}; 33 sort(spa); 34 prins(spa); 35 getch(); 36 return 0; 37 }
运行结果:America Australia China France Germany
解释:①strcmp(str1,str2)中,
当str1 > str2时,函数值 > 0;
当str1 = str2时,函数值 = 0;
当str1 < str2时,函数值 < 0;
②因为put[i]是一个字符串指针,字符串指针指向一个字符常量的地址,由printf()的函数原型可知这里不能用*put[i],否则会出错。
总结:要明确字符串指针的原理,通过构建指针数组来进行字符串指针直接的顺序互换,套用一维数组的排序方法就可以进行字符串指针的排序,达到目的。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:C语言编写的简单的电话本管理系统
下一篇:glibc内存管理方式
- C++ 在名称空间中使用using声明和using编译指令 2020-05-29
- C++ 名称空间嵌套 2020-05-29
- c++数据 2018-12-20
- 洛谷P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯 2018-07-19
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose) 2018-06-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash