题目链接
好长时间没写这么简单的题了,完全是套路,写完之后发现和《算法笔记》上的代码几乎完全一样。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct Stu{
char name[20],id[20];
int grade;
}stu[110];
bool cmp(Stu a, Stu b){
return a.grade>b.grade;
}
int main(){
int n,min,max;
scanf("%d",&n);
for (int i=0; i<n; i++){
scanf("%s %s %d",stu[i].name, stu[i].id, &stu[i].grade);
}
scanf("%d %d",&min,&max);
sort(stu,stu+n,cmp);
int flag=0;
for (int i=0; i<n; i++){
if (stu[i].grade>=min && stu[i].grade<=max){
printf("%s %s\n",stu[i].name, stu[i].id);
flag=1;
}
}
if (!flag) printf("NONE\n");
}
有一个小感悟,本题没有告诉我们总共有多少考生参加考试,所以一开始我想 这道题用数组的话,我怎么知道数组要有多少元素, 只能将数组元素个数设定得大一点, 但其实题目中说了,所有分数都是不一样的,所以最多有101个考生, 这个数组元素的个数设置成110就完全满足了。
这可能时做这道题的唯一一个小收获。