标题:某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发 ...
只看楼主
zed18181
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-3-6
结帖率:100%
已结贴  问题点数:20 回复次数:3 
某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。。。
某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。
任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。
搜索更多相关主题的帖子: 学习 成绩 学生 总分 排序 
2018-03-06 15:04
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
struct 学生
{
    学号
    语文
    数学
    外语
};

int comp( const void* a, const void* b )
{
    if( a的总分 < b的总分 ) return -1;
    if( a的总分 > b的总分 ) return +1;
    if( a的语文 < b的语文 ) return -1;
    if( a的语文 > b的语文 ) return +1;
    if( a的学号 < b的学号 ) return -1;
    if( a的学号 > b的学号 ) return +1;
    return 0;
}

#include <stdlib.h>
int main( void )
{
    ……
    qsort( …, …, sizeof(struct 学生), &comp );
}
2018-03-06 16:04
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
得分:5 
结构体:
struct student
{
    学位
    语言分数
    数学分数
    英语分数
    总成绩
};

思路:
1.录入学位以及各科分数,计算总分。
2.按总分从高到低排序。
 (1)如果总分相同,比较语文分数,从高到低排序。
 (2)如果语文分数相同,比较学位,学位靠前的(如1<2)方式排序

普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2018-03-06 16:57
学跑步的少年
Rank: 1
等 级:新手上路
帖 子:39
专家分:5
注 册:2018-3-6
得分:5 
。。。。。。。
2018-03-07 09:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485039-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016428 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved