黑马程序员技术交流社区

标题: 一道关于最高分与最低分的问题? [打印本页]

作者: 道本真    时间: 2014-7-16 23:00
标题: 一道关于最高分与最低分的问题?
本帖最后由 道本真 于 2014-7-19 12:11 编辑

今天看得视频里有一道题目:提示输入5个学生分数,求平均分,最高分与最低分,老师求了平均值,最高分我用仿造老师的方法也做了,但最高分与最低分的差距,我苦想很久都没想出来,会得帮忙指点一下。。。谢谢,下面是我求最高分的代码:
作者: 道本真    时间: 2014-7-16 23:03
本帖最后由 道本真 于 2014-7-16 23:05 编辑

一下是仿造老师求最高分的代码
int main ()
{
    // 1.定义一个数组来存储成绩
    int scores[5];
   
    // 2.提示输入成绩
    // 用来存储最高分
    int max =0;
    for (int i = 0; i<5; i++) {
        // 2.1 提示输入某个学生的成绩
        printf("请输入第%d个学生的成绩:\n", i + 1);
        // 2.2 存储当前学生的成绩
        scanf("%d", &scores);
        // 2.3 比较大小,看是否需要互换
        if (max<scores)
        {
            max = max^scores;
            scores =max^scores;
            max = max^scores;
        
        }
    }
   
    // 3.输出最高分
    printf("最高分是%d\n", max);
    return 0;


}

作者: haohaoxuexi    时间: 2014-7-16 23:54
// 2.3 比较大小,看是否需要互换(这个应该是不用互换的,直接让max等于最大值就行了,最小值你也可以这样求出来,最小值的初值设为第一个输入的值,最后求最大值与最小值之差)
        if (max<scores)
        {
            max = max^scores;
            scores =max^scores;
            max = max^scores;
        
        }
作者: 温天恩    时间: 2014-7-17 00:05
老师在视频里讲了,位运算的可读性差,一般不推荐这么用的,其实你完全不必纠结这个,有时需要牺牲代码量来加强代码的可读性。
作者: 可心来了    时间: 2014-7-17 00:10
楼主加油 顶一个
作者: Devchen    时间: 2014-7-17 00:11
表示这个^符号差点都没认出来,感觉可读性有点差,抽空复习了再看
作者: 道本真    时间: 2014-7-17 16:03
haohaoxuexi 发表于 2014-7-16 23:54
// 2.3 比较大小,看是否需要互换(这个应该是不用互换的,直接让max等于最大值就行了,最小值你也可以这样 ...

恩,用max赋值就可以了,自己搞复杂了,还就是你说。。。最小值得初值设为第一个输入值???谁知道自己第一个输入的时最小值,如果知道就不需要程序了把
作者: 道本真    时间: 2014-7-17 16:06
温天恩 发表于 2014-7-17 00:05
老师在视频里讲了,位运算的可读性差,一般不推荐这么用的,其实你完全不必纠结这个,有时需要牺牲代码量来 ...

谢谢你的回复,后来也觉得自己不必怎么大费周章,但老师有讲可读性差吗?我忘了!还有这个问题的初衷不是在这个地方,而是如何让最高值与最低值相减。,
作者: 道本真    时间: 2014-7-17 16:11
可心来了 发表于 2014-7-17 00:10
楼主加油 顶一个

三克油:)
作者: haohaoxuexi    时间: 2014-7-17 16:37
道本真 发表于 2014-7-17 16:03
恩,用max赋值就可以了,自己搞复杂了,还就是你说。。。最小值得初值设为第一个输入值???谁知道自己 ...

int max =0;
int min;
printf("请输入第1个学生的成绩:\n");
scanf("%d", &scores);;
min =scores;
    for (int i = 1; i<5; i++) {
        // 2.1 提示输入某个学生的成绩
        printf("请输入第%d个学生的成绩:\n", i + 1);
        // 2.2 存储当前学生的成绩
        scanf("%d", &scores);
        // 2.3 比较大小,看是否需要互换
        if (max<scores)
        {
            max = scores;
        }
if(min >scores)
{
min =scores
}
    }
作者: rocki    时间: 2014-7-17 16:39
给五个数排序一下。大的放到前面。小得放到后面。。。然后就找到最大最小值了。。。
作者: 道本真    时间: 2014-7-19 12:08
haohaoxuexi 发表于 2014-7-17 16:37
int max =0;
int min;
printf("请输入第1个学生的成绩:\n");

感激不尽~
作者: 道本真    时间: 2014-7-19 12:09
rocki 发表于 2014-7-17 16:39
给五个数排序一下。大的放到前面。小得放到后面。。。然后就找到最大最小值了。。。 ...

排序?额。。。貌似我还不知道怎么排序




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