使用指針的指針對字符串排序


 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 */

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM