PAT (Basic Level) 1080 MOOC期终成绩(模拟+stl)
题目链接: 点击查看 题目大意:分别给出a个学生的编程分数,b个学生的期中考试成绩,c个学生的期末考试成绩,有几个规则: 总评为: 若期中考试成绩大于期末考试成绩: 否则: 合格的定义是编程分数大于等于200并且总评四舍五入后大于等于60 排序的优先级是: 先按总评排序 再按学号排序 满足以上规则的情况下,从大到小输出合格的学生信息 题目分析:思路简单的一道模拟题,就因为这个题目将学号变为了字符串就上升了一个难度,如果是四位或五位的数字的话我们可以直接开结构体然后储存信息,但既然学号变为了字符串,我们就不得不用map映射到结构体上,最后从map导出到vector中方便排序,最后就可以直接输出了,思路简单,但实现起来有点乱(指的是代码看起来比较乱),但身为stl依赖症患者,表示写起来非常顺畅 有个小细节需要注意一下,题目要求合格的人是在四舍五入后大于等于60的人,也就是说一个学生考了59.9分,也是算入合格的名单中的(emmm?如果现实真这样该多好啊),这个小细节对应着测试点3,我们只需要在结构体储存总评的时候用int储存就行了,在计算时四舍五入就是(int)(a+0.5),就行了 然后还有一个小细节,我注意到了但不知道这个题有没有故意挖坑,那就是期中考试和期末考试得了0分的人,本来我是直接想判断一下期中考试的分数是否为0来判断一个人是否参加过期中考试来着,但因为考虑到了这个细节