黑马程序员技术交流社区

标题: 判断最大值的优化代码 [打印本页]

作者: skywan    时间: 2015-7-20 10:10
标题: 判断最大值的优化代码
本帖最后由 skywan 于 2015-7-22 16:49 编辑

从键盘输入三个整数,找出最大值,并且输出。
传统的方法是写if……else的代码,依次比较,而现在看了三目运算直接可以用它来简化代码量。
传统的:
  1. int main(int argc,const char *argv)
  2. {
  3.         //定义三个整数
  4.         int a, b, c;
  5.         //定义中间最大值变量并初始化
  6.         int max = 0;
  7.         printf("请输入三个整数:");
  8.         scanf("%d,%d,%d",&a,&b,&c);
  9.         if (a > b)
  10.         {
  11.                 max = a;
  12.         }
  13.         else
  14.         {
  15.                 max = b;
  16.         }
  17.         if (max > c)
  18.         {
  19.                 max = max;
  20.         }
  21.         else
  22.         {
  23.                 max = c;
  24.         }
  25.         printf("最大值为%d", max);
  26.         return 0;
  27. }
复制代码

优化后的代码:
  1. int main(int argc,const char *argv)
  2. {
  3.         //定义三个整数
  4.         int a, b, c;
  5.         //定义中间最大值变量并初始化
  6.         int max = 0;
  7.         printf("请输入三个整数:");
  8.         scanf("%d,%d,%d",&a,&b,&c);
  9.         //a与b比较大小,取大值赋值给max
  10.         max = a > b ? a : b;
  11.         //max在与第三个数比较大小,取大值赋值给max
  12.         max = max > c ? max : c;
  13.         printf("最大值为%d", max);
  14.         return 0;
  15. }
复制代码

作者: 狂甩你十八条街    时间: 2015-7-20 10:16
这适用于要比较的变量数量少的,如果多的话,推荐快速排序
作者: skywan    时间: 2015-7-20 11:31
狂甩你十八条街 发表于 2015-7-20 10:16
这适用于要比较的变量数量少的,如果多的话,推荐快速排序

这是比较简单的,当多了的话可以用数组选择for循环,采用冒泡或者就像你说的快速排序法。谢啦
作者: 狂甩你十八条街    时间: 2015-7-20 17:02
skywan 发表于 2015-7-20 11:31
这是比较简单的,当多了的话可以用数组选择for循环,采用冒泡或者就像你说的快速排序法。谢啦 ...

共同进步呗,嘿嘿。
作者: 默凉雨    时间: 2015-7-20 19:13
厉害!!!
作者: lixianzhu0712    时间: 2015-7-20 19:59
好棒!!!!!!
作者: zhaofeizlj    时间: 2015-7-20 21:15
很厉害!!!!!!!!!!!!!!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2