-
题目大意:倒叙输出成绩在所给范围内的学生信息(所给学生信息的成绩各不相同)。
-
思路:先排序,然后判断成绩是否在范围内,若在就输出。
-
知识点:
- 结构体
- vector
- sort,自定义cmp
-
代码:
#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; struct stu{ string name, id; int grade; }; bool cmp(stu s1, stu s2){ return s1.grade > s2.grade; }; int main(){ int n, grade1, grade2; bool flag = false; scanf("%d", &n); vector<stu> v(n); for(int i = 0; i < n; i++){ cin >> v[i].name >> v[i].id >> v[i].grade; } cin >> grade1 >> grade2; sort(v.begin(), v.end(), cmp); for(int i = 0; i < n; i++){ if(v[i].grade >= grade1 && v[i].grade <= grade2) { // 若不满足条件,不能break,因为如果第一个学生的成绩大于grade2,就会直接跳出循环 flag = true; printf("%s %s\n", v[i].name.c_str(), v[i].id.c_str()); } } if(!flag) printf("NONE"); return 0; }
-
总结:
- 一开始为了节省时间,在判断学生成绩是否在范围内时,我在不满足条件的情况下用
break
跳出循环了,结果有一个测试点没通过。但若不满足条件,不能break,因为如果第一个学生的成绩大于grade2,就会直接跳出循环; - 排序题比较简单,但是几乎每次都有一两个测试点没通过。说明有一些细节我总是没注意到。
- 一开始为了节省时间,在判断学生成绩是否在范围内时,我在不满足条件的情况下用
【PAT】1083 List Grades (25 分)
最新推荐文章于 2021-09-08 20:03:05 发布