鱼C论坛

 找回密码
 立即注册
查看: 3004|回复: 2

048第八章 指针08(新版) 中源码求解释!!

[复制链接]
发表于 2012-7-28 14:36:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 最后的战士 于 2012-7-28 17:51 编辑
  1. #include <stdio.h>
  2. #include <string.h>
  3. void main()
  4. {

  5. char *name[4]={"Fishc.com","www.fishc.com","home.fishc.com","Fishc.com/dz"};
  6. void sort(char *name[], int n );
  7. void print(char *name[],int n );
  8. print(name, 4 );
  9. printf("\n \n");
  10. sort( name, 4 );
  11. print(name, 4 );





  12. }

  13. void sort(char *name[], int n)
  14. {

  15. char *temp;

  16. int i,j,k;

  17. for (i=0;i<n-1;i++)
  18. {
  19. k=i;

  20. for (j=i+1;j<n;j++)
  21. {


  22. if ( strcmp(name[k],name[j]) > 0 )
  23. {
  24. k=j;

  25. }
  26. if(k!=i)
  27. {
  28. temp = name[i];
  29. name[i]=name [k];
  30. name[k]=temp ;
  31. }

  32. }
  33. }



  34. }

  35. void print(char *name[],int n )
  36. {
  37. int i;
  38. for (i=0;i<n;i++)
  39. {
  40. printf("%s\n",name[i]);
  41. }

  42. }
复制代码




关于循环的原理,我开始用的冒泡,不过没有成功。。。

小甲鱼老师的没看懂

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-28 17:39:03 | 显示全部楼层
你可以把完整代码发出来吗  用编译栏 上面 的<> 这个发 这样方便别人帮你修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-30 17:55:15 | 显示全部楼层
  1. #include"stdafx.h"
  2. #include <stdio.h>
  3. #include <string.h>


  4. void main()
  5. {
  6.         // name[i] 存放的是指向 字符串常量的地址,即name[i]就是char*类型的指针
  7.         char *name[4]={"Fishc.com","www.fishc.com","home.fishc.com","Fishc.com/dz"};
  8.         void sort(char *name[], int n );
  9.         void print(char *name[],int n );
  10.         print(name, 4 );
  11.         printf("\n \n");
  12.         sort( name, 4 );
  13.         print(name, 4 );
  14.        
  15. }


  16. void print(char *name[],int n )
  17. {
  18.         int i;
  19.         for (i=0;i<n;i++)
  20.         {
  21.                 printf("%s\n",name[i]);
  22.         }
  23.        
  24. }


  25. void sort(char *name[], int n)
  26. {
  27.        
  28.         char *temp;
  29.        
  30.         int i,j,k;
  31.         //此处仍然是冒泡排序
  32.         for (i=0;i<n-1;i++)
  33.         {
  34.                 k=i;
  35.                
  36.                 for (j=i+1;j<n;j++)
  37.                 {
  38.                        
  39.                         //strcmp()对字符串常量按照字典表进行排序
  40.                         //name[k]是字符串常量指针
  41.                         if ( strcmp(name[k],name[j]) > 0 )
  42.                         {
  43.                                 //此处就是将J赋值给K,其实循环里边就是I和J的比较而已,K就是个中间变量,别纠结太多
  44.                                 k=j;                                                                       
  45.                         }
  46.                         if(k!=i)
  47.                         {
  48.                                 // name[i] 存放的是指向 字符串常量的地址(不是字符串本身),即name[i]就是char*类型的指针,所以可以temp = name[i]赋值
  49.                                 //交换name[i]与name[k]的值
  50.                                 temp = name[i];
  51.                                 name[i]=name [k];
  52.                                 name[k]=temp ;
  53.                         }
  54.                        
  55.                 }
  56.         }
  57.        
  58.        
  59.        
  60. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 21:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表