黑马程序员技术交流社区

标题: 三目运算的冒泡法,求max和min [打印本页]

作者: 杨庆庆    时间: 2015-6-24 23:27
标题: 三目运算的冒泡法,求max和min
/*
编写一个程序,要求从键盘上输入某个学生的四科成绩,求出该学生的最高分和最低分
*/

#include <stdio.h>
int main(int argc, const char * argv[]) {

    /**
     *  定义变量,要求定义四个变量,来存储四个成绩.
     */
    double a,b ,c ,d ,max,min ;
    //提示用户输入依次输入成绩
    printf("请输入四项成绩:\n");
    //接受用户输入的成绩
    scanf("%lf%lf%lf%lf",&a,&b ,&c ,&d );
    max = (a-b>=0) ? a :b;
    max= (max-c>=0)? max:c;
    max= (max-d>=0)? max:d;
    min = (a-b<=0)? a:b;
    min =(min-c<=0)?min:c;
    min= (min-d<=0)?min:d;
    printf ("The max is %.2f \n",max);
    printf ("The min is %.2f \n",min);
    return 0;
}

作者: 李旭飞    时间: 2015-6-24 23:43
冒泡主要是用来比较排序的,你的排序呢?
作者: 杨庆庆    时间: 2015-6-25 20:22
不好意思的,只有比较的
作者: 丁铭检    时间: 2015-6-26 09:23
看着就晕了。。。
作者: cuin    时间: 2015-6-26 09:54
代码可读性非常重要,及时通过这种方式少写了几行代码,但是读起来太绕啦~
作者: αメ炫    时间: 2015-6-26 10:00
^^骗我, 一个冒泡的影子都没有, 只有三目运算符,跟if else比较是一回事,当要输入10个数或更多数的时候,就累死了,且没有封装性,当要求是输入10个数统一前3个数的最大最小+再统计前6个数中的最大最小,再统计前10个的最大最小,最后再算出这三个数的最大最小,这种没有封装性的会导致,每一次运算都要写一堆判断,哈哈,我好像想多了

还有(a-b>=0)?a:b,这里前面的括号可以去掉,逻辑运算优先级要高于三目运算,另外a-b>=0可以直接写a>=b,减少一个减法运算提升一点性能
作者: mazhichao    时间: 2015-6-26 12:29
代码正确,但是感觉代码的复用性跟可读性差了点,你应该只是复习三目运算把~
作者: 沙睿    时间: 2015-6-26 23:13
可读性不太好
作者: Fighting--BJ    时间: 2015-6-27 00:07
学习学习!赞一个!
作者: 皇道金丹    时间: 2015-6-27 00:17
老觉着冒泡和用第三方变量交换值没什么区别,到现在都不是怎么明白冒泡,感觉选择比冒泡好多了
作者: 杨庆庆    时间: 2015-6-30 22:21
αメ炫 发表于 2015-6-26 10:00
^^骗我, 一个冒泡的影子都没有, 只有三目运算符,跟if else比较是一回事,当要输入10个数或更多数的时候 ...

感谢指点..大神
作者: αメ炫    时间: 2015-6-30 23:01
杨庆庆 发表于 2015-6-30 22:21
感谢指点..大神

唉,我说的也有错误,>=是关系运算符不是逻辑运算符,与或非才是逻辑运算符
作者: zilin    时间: 2015-6-30 23:05
好好好。受教了。
作者: aludiba    时间: 2015-7-1 01:26
跟冒泡排序没关系吧 就是找出四个数中的最大值和最小值 冒泡是把四个数的大小顺序排出来
3个数以内这样写简洁、省事,如果数再多就不好了
作者: 弥修斯    时间: 2015-7-1 12:00
max( max(max( a,b ),c),d );
min( min(min( a,b),c  ),d);




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