题目粗心:

给出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;}