1083 List Grades 发表于 2020-05-31 因为保证每个人的grade不同,所以从高到低排序就可以,不用考虑相同的情况。不在区间内的,grade赋值-1,往后放,else满足条件的计数cnt++。 123456789101112131415161718192021222324252627282930313233343536373839#include <bits/stdc++.h>using namespace std; struct student { char name[11]; char id[11]; int grade;};bool cmp1(student a, student b) { return a.grade > b.grade;}int main() { int n, low, high, cnt = 0; scanf("%d", &n); vector<student> v(n); for (int i = 0; i < n; i++) { scanf("%s %s %d", &v[i].name, &v[i].id, &v[i].grade); } scanf("%d %d", &low, &high); for (int i = 0; i < n; i++) { if (v[i].grade < low || v[i].grade > high) { v[i].grade = -1; } else { cnt++; } } sort(v.begin(), v.end(), cmp1); if (cnt == 0) printf("NONE"); else { for (int i = 0; i < cnt; i++) { printf("%s %s\n", v[i].name, v[i].id); } } return 0;}