【C语言】对5个国家的名称进行排序详细解析
2016-07-15 14:14
351 查看
注:代码通过TDM-GCC4.9.2编译通过
原题:有"China","America","Australia","France","Germany"五个国名。设计一个程序使其按字母顺序进行排序并输出结果。
思路:应用传统的排序方法,将字符串保存在字符数组中进行交换,将使得程序变得复杂,难于编写检查。可以将其都保存在字符串指针数组中。排序时只要套用原来一维数组的排序方法,将两个字符串指针在指针数组中的顺序进行交换,程序就变得十分简单。
设计:编写2个自定义函数:void sort(char *name[])用于排序,void prins(char *put[])用于输出。在main()函数中对字符串进行赋值,并且依次调用两个自定义函数,完成设计。
代码:
运行结果:America Australia China France Germany
解释:①strcmp(str1,str2)中,
当str1 > str2时,函数值 > 0;
当str1 = str2时,函数值 = 0;
当str1 < str2时,函数值 < 0;
②因为put[i]是一个字符串指针,字符串指针指向一个字符常量的地址,由printf()的函数原型可知这里不能用*put[i],否则会出错。
总结:要明确字符串指针的原理,通过构建指针数组来进行字符串指针直接的顺序互换,套用一维数组的排序方法就可以进行字符串指针的排序,达到目的。
原题:有"China","America","Australia","France","Germany"五个国名。设计一个程序使其按字母顺序进行排序并输出结果。
思路:应用传统的排序方法,将字符串保存在字符数组中进行交换,将使得程序变得复杂,难于编写检查。可以将其都保存在字符串指针数组中。排序时只要套用原来一维数组的排序方法,将两个字符串指针在指针数组中的顺序进行交换,程序就变得十分简单。
设计:编写2个自定义函数:void sort(char *name[])用于排序,void prins(char *put[])用于输出。在main()函数中对字符串进行赋值,并且依次调用两个自定义函数,完成设计。
代码:
#include <stdio.h> #include <stdlib.h> #define N 5 void sort(char *name[]) //排序 { int i,j; char *sp; //用于临时交换 for(i = 0;i < N-1;i++) //利用选择排序法进行排序 { for(j = i+1;j < N;j++) { if(strcmp(name[i],name[j]) > 0) <span style="font-family: Arial, Helvetica, sans-serif;">//当name[i]>name[j]时进行交换来排序①</span> { sp = name[i]; name[i] = name[i+1]; name[i+1] = sp; } } } } void prins(char *put[]) //输出 { int i; for(i = 0;i < N;i++) printf("%s ",put[i]); //不能写*put[i]② } int main() { char *spa[] = {"China","America","Australia","France","Germany"}; sort(spa); prins(spa); getch(); return 0; }
运行结果:America Australia China France Germany
解释:①strcmp(str1,str2)中,
当str1 > str2时,函数值 > 0;
当str1 = str2时,函数值 = 0;
当str1 < str2时,函数值 < 0;
②因为put[i]是一个字符串指针,字符串指针指向一个字符常量的地址,由printf()的函数原型可知这里不能用*put[i],否则会出错。
总结:要明确字符串指针的原理,通过构建指针数组来进行字符串指针直接的顺序互换,套用一维数组的排序方法就可以进行字符串指针的排序,达到目的。
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言判断一个数是否是2的幂次方或4的幂次方
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- C语言实现选择排序、冒泡排序和快速排序的代码示例