鱼C论坛

 找回密码
 立即注册
查看: 2864|回复: 3

[技术交流] 吐血的比较...大家来围观!!!

[复制链接]
发表于 2012-2-12 21:49:31 | 显示全部楼层 |阅读模式

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

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

x
正确代码:      请注意代码2的注释,害人啊,害我检查了好久....


  1. #include <stdio.h>
  2. void swap(int *p1, int *p2, int *p3);
  3. void main()
  4. {
  5.        int a, b, c, *pu1, *pu2, *pu3;
  6.       scanf("%d%d%d", &a, &b, &c);
  7.       pu1 = &a;
  8.       pu2 = &b;
  9.       pu3 = &c;
  10.       swap(pu1, pu2, pu3);
  11.       printf("%d > %d > %d\n", *pu1, *pu2, *pu3);
  12. }
  13. void swap(int *p1, int *p2, int *p3)
  14. {
  15.       int temp;
  16.       if(*p1 < *p2)
  17.       {
  18.            temp = *p1;
  19.            *p1 = *p2;
  20.            *p2 = temp;
  21.      }
  22.      if(*p1 < *p3)
  23.      {
  24.            temp = *p1;
  25.           *p1 = *p3;
  26.           *p3 = temp;
  27.      }
  28.      if(*p2 < *p3)
  29.      {
  30.           temp = *p2;
  31.          *p2 = *p3;
  32.         *p3 = temp;
  33.      }
  34. }
复制代码

错误代码:

  1. #include <stdio.h>
  2. void swap(int *p1, int *p2, int *p3);
  3. void main()
  4. {
  5.       int a, b, c, *pu1, *pu2, *pu3;
  6.       scanf("%d%d%d", &a, &b, &c);
  7.       pu1 = &a;
  8.       pu2 = &b;
  9.       pu3 = &c;
  10.       swap(pu1, pu2, pu3);
  11.       printf("%d > %d > %d\n", *pu1, *pu2, *pu3);
  12. }
  13. void swap(int *p1, int *p2, int *p3)
  14. {
  15.       int temp;
  16.       if(*p1 < *p2)
  17.       {
  18.             temp = *p1;
  19.             *p1 = *p2;
  20.             *p2 = temp;
  21.        }
  22.        if(*p2 < *p3)     //  if (*p2 < *p3)与if (*p1 < *p3)交换一下还会出现错误????
  23.       {
  24.            temp = *p2;
  25.            *p2 = *p3;
  26.            *p3 = temp;
  27.       }
  28.       if(*p1 < *p3)
  29.       {
  30.             temp = *p1;
  31.            *p1 = *p3;
  32.            *p3 = temp;
  33.       }
  34. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-12 22:19:22 | 显示全部楼层
当然会出现错误了,
如果p3是三个数里面最大的,
那么   if(*p2 < *p3)就会交换p2 和 p3 ,现在就变成p2是最大的
而后面没有p2 和 p1的比较了 就会出现错误的结果了
二你想的是要p1>p2>p3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-13 00:39:17 | 显示全部楼层
我来学习,借鉴经验
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-13 20:29:43 | 显示全部楼层
虽然刚学看不懂,但我喜欢这个……收藏了以后来看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-19 19:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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