1 /* Note:Your choice is C IDE */
2 #include "stdio.h"
3 #include "string.h"
4 /*使用指针的指针对字符串排序*/
5 /*排序是按照汉字的首字母进行*/
6 /*
7 *整体思路:1、输出排序前的数组元素
8
9 * 2、输出排序后的数组元素
10
11 */
12 //自定义函数sort(),实现对字符串的排序
13 sort(char*strings[],int n)//参数1:字符型指针数组。参数2:整型变量
14 {
15 char *temp; //声明字符型指针变量
16 int i,j; //声明整型变量
17 for(i=0;i<n;i++) //之所以要两个循环,因为每个数都要和其他比较
18 {
19 for(j=i+1;j<n;j++)
20 {
21 /*
22 *strcmp如何实现两个字符的比较??
23 ① str1小于str2,返回负值或者-1(VC返回-1);
24 ② str1等于str2,返回0;
25 ③ str1大于str2,返回正值或者1(VC返回1);
26 */
27 if(strcmp(strings[i],strings[j])>0)//比较两个字符
28 {
29 temp=strings[i];//交换字符位置
30 strings[i]=strings[j];
31 strings[j]=temp;
32 }
33 }
34 }
35 }
36
37 void main()
38 {
39 int n=5;
40 int i;
41 //char *strings[];
42 char **p;//指向指针的指针变量
43 char *strings[]={"c","a","d","b","e"};//初始化字符串数组
44 p=strings;//指针指向数组首地址
45 printf("排序前的数组:\n");
46 for(i=0;i<n;i++)
47 {
48 printf("%s\n",strings[i]);
49 }
50 sort(p,n);//调用排序自定义过程
51 printf("\n排序后的数组:\n");
52 for(i=0;i<n;i++)//循环输出排序后的数组元素
53 {
54 printf("%s\n",strings[i]);
55 }
56 getch();
57 }
58
59 /*总结:
60 1、
61 两个数字交换一般思路,需要另一个载体,
62 *例如a和b数值交换,需要借助c,
63 *把a的数值赋值给c,
64 *再把b的数值赋值给a,
65 *再把c的数值赋给a,
66 *从而实现a和b数值的交换
67 2、双重for循环用于每个数都要与其他数比较
68 */
![]()