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("排序前的数组: "); 46 for(i=0;i<n;i++) 47 { 48 printf("%s ",strings[i]); 49 } 50 sort(p,n);//调用排序自定义过程 51 printf(" 排序后的数组: "); 52 for(i=0;i<n;i++)//循环输出排序后的数组元素 53 { 54 printf("%s ",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 */