【PAT】1137. Final Grading (25)
本文共 2407 字,大约阅读时间需要 8 分钟。
-
题目大意:计算每个学生的最终成绩(注意最后的总分是四舍五入得到的整数),判断学生是否能获得证书,获得证书标准为:
- 在线编程任务得分 >= 200
- 60 <= 最终成绩 <= 100(若期末成绩 >= 期中成绩,只考虑期末成绩;否则就以40%期中和60%期末的和算)
- 若满足上述条件,该学生就能拿到证书。并且按照最终成绩(四舍五入的整数)降序输出,若成绩相同,则按id升序输出
-
思路:
- 用map(字符串)存每个人的三个成绩;
- 判断每个人的编程得分是否达标,若达标,再判断他们的期中成绩和期末成绩大小(即只存编程得分达标的),计算最终成绩(四舍五入);
- 用unordered_map存符合条件的学生,存最终成绩时记得四舍五入,最后将最后成绩放入数组,降序输出学生的各个成绩;
-
知识点:
- 结构体
- map
- unordered_map
- 四舍五入:round()
- sort,cmp
-
代码:
#include #include
-
总结
-
仔细读题!,这次没看到“若成绩相同,则按id升序输出”,所以输出结果有错;
-
如果一个东西有多个属性,就用结构体;
-
要排序的东西可以放到数组里。
-
以后多用三目运算符,可以减少代码量。
-
结构体的元素可以用{}
表示;
struct stu{ string name; int age; int sex;};int main(){ stu student1 = { "Lily", 10, 1}; stu student2 = stu{ "Tom", 11, 0}; // 也可在打括号前写结构体名字 return 0;}
-
unordered_map
:map
会自动排序,若不需排序,可用 unordered_map
减少运算时间。
-
四舍五入:round()
转载地址:http://dgjwk.baihongyu.com/