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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 道本真 中级黑马   /  2014-7-16 23:00  /  1801 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 道本真 于 2014-7-19 12:11 编辑

今天看得视频里有一道题目:提示输入5个学生分数,求平均分,最高分与最低分,老师求了平均值,最高分我用仿造老师的方法也做了,但最高分与最低分的差距,我苦想很久都没想出来,会得帮忙指点一下。。。谢谢,下面是我求最高分的代码:

13 个回复

倒序浏览
本帖最后由 道本真 于 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;


}

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
// 2.3 比较大小,看是否需要互换(这个应该是不用互换的,直接让max等于最大值就行了,最小值你也可以这样求出来,最小值的初值设为第一个输入的值,最后求最大值与最小值之差)
        if (max<scores)
        {
            max = max^scores;
            scores =max^scores;
            max = max^scores;
        
        }
回复 使用道具 举报
老师在视频里讲了,位运算的可读性差,一般不推荐这么用的,其实你完全不必纠结这个,有时需要牺牲代码量来加强代码的可读性。
回复 使用道具 举报
楼主加油 顶一个
回复 使用道具 举报
表示这个^符号差点都没认出来,感觉可读性有点差,抽空复习了再看

点评

我也没认出来,忏悔去  发表于 2014-7-17 00:22
回复 使用道具 举报
haohaoxuexi 发表于 2014-7-16 23:54
// 2.3 比较大小,看是否需要互换(这个应该是不用互换的,直接让max等于最大值就行了,最小值你也可以这样 ...

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

谢谢你的回复,后来也觉得自己不必怎么大费周章,但老师有讲可读性差吗?我忘了!还有这个问题的初衷不是在这个地方,而是如何让最高值与最低值相减。,
回复 使用道具 举报

三克油:)
回复 使用道具 举报
道本真 发表于 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
}
    }

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报 1 0
rocki 中级黑马 2014-7-17 16:39:37
11#
给五个数排序一下。大的放到前面。小得放到后面。。。然后就找到最大最小值了。。。
回复 使用道具 举报
haohaoxuexi 发表于 2014-7-17 16:37
int max =0;
int min;
printf("请输入第1个学生的成绩:\n");

感激不尽~
回复 使用道具 举报
rocki 发表于 2014-7-17 16:39
给五个数排序一下。大的放到前面。小得放到后面。。。然后就找到最大最小值了。。。 ...

排序?额。。。貌似我还不知道怎么排序
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马