A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨庆庆 中级黑马   /  2015-6-24 23:27  /  1767 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
编写一个程序,要求从键盘上输入某个学生的四科成绩,求出该学生的最高分和最低分
*/

#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;
}

14 个回复

倒序浏览
冒泡主要是用来比较排序的,你的排序呢?
回复 使用道具 举报
不好意思的,只有比较的
回复 使用道具 举报
看着就晕了。。。
回复 使用道具 举报
代码可读性非常重要,及时通过这种方式少写了几行代码,但是读起来太绕啦~
回复 使用道具 举报
^^骗我, 一个冒泡的影子都没有, 只有三目运算符,跟if else比较是一回事,当要输入10个数或更多数的时候,就累死了,且没有封装性,当要求是输入10个数统一前3个数的最大最小+再统计前6个数中的最大最小,再统计前10个的最大最小,最后再算出这三个数的最大最小,这种没有封装性的会导致,每一次运算都要写一堆判断,哈哈,我好像想多了

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

感谢指点..大神
回复 使用道具 举报

唉,我说的也有错误,>=是关系运算符不是逻辑运算符,与或非才是逻辑运算符
回复 使用道具 举报
zilin 中级黑马 2015-6-30 23:05:30
13#
好好好。受教了。
回复 使用道具 举报
跟冒泡排序没关系吧 就是找出四个数中的最大值和最小值 冒泡是把四个数的大小顺序排出来
3个数以内这样写简洁、省事,如果数再多就不好了
回复 使用道具 举报
max( max(max( a,b ),c),d );
min( min(min( a,b),c  ),d);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马