码迷,mamicode.com
首页 > 编程语言 > 详细

使用指针的指针对字符串排序

时间:2017-10-17 23:03:16      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:print   printf   pre   image   数值   比较   color   sort   地址   

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

技术分享

 

使用指针的指针对字符串排序

标签:print   printf   pre   image   数值   比较   color   sort   地址   

原文地址:http://www.cnblogs.com/kinson/p/7684222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!