1. 程式人生 > >使用指針的指針對字符串排序

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

string.h 數值交換 for 字符位置 std 使用 getc spa 分享

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

技術分享

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