题目大意:
给出N位考生的姓名、准考证号及分数,将这些信息按分数从高到低排序,并输出分数在给定区间[grade1, grade2]内的考生信息。
如果不存在满足条件的考生,则输出“NONE"。
算法思路:
根据题意,结构体类型Student需要存放考生的姓名、准考证号和分数。由于所有考生的分数都不相同,排序函数就只需根据分数进行排序即可。
同时使用isExist变量来记录是否有存在[grade1,grade2]的考生,如果为false,就输出为false.
提交结果:
AC代码:
#include<cstdio>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
struct Student{
string name;
string ID;
int grade;
};
bool cmpByGrade(Student a,Student b){
return a.grade>b.grade;
}
int main(){
int N;// 总人数
scanf("%d",&N);
char name[10];
char id[20];
vector<Student> students;
Student student;
for (int i = 0; i < N; ++i) {
scanf("%s %s %d",name,id,&student.grade);
student.name = name;
student.ID = id;
students.push_back(student);
}
int grade1,grade2;//分数的上下界
scanf("%d %d",&grade1,&grade2);
sort(students.begin(),students.end(),cmpByGrade);
bool isExist = false;// 是否有学生在[grade1,grade2]区间中
for (int j = 0; j < students.size(); ++j) {
if (students[j].grade>=grade1&&students[j].grade<=grade2){
isExist = true;
printf("%s %s\n",students[j].name.c_str(),students[j].ID.c_str());
}
}
if (!isExist){
printf("NONE\n");
}
return 0;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。