班级贡献奖是班级评议分>80,而不是成绩>80,所以把
```cpp
if(stu[i].score>80&&stu[i].contribute)stu[i].scholarship+=850;
```
一行,前面的.score改成.Evaluation_results
```cpp
if(stu[i].Evaluation_results>80/*改这里*/&&stu[i].contribute)stu[i].scholarship+=850;
```
AC代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
struct student{
string name="";//姓名
int number=0;//编号
int score=0;//成绩
int Evaluation_results;//班级评议成绩
bool academician=false;//院士
bool May_Fourth=false;//五四
bool excellent=false;//极好的
bool west=false;//西部
bool contribute=false;//贡献
long long scholarship=0;//奖学金
}stu[105];
bool cmp(student x,student y){
if(x.scholarship!=y.scholarship)return x.scholarship>y.scholarship;
else return x.number<y.number;
}
long long sum=0;
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
char ch;
int in;
cin>>stu[i].name;
stu[i].number=i;
cin>>stu[i].score;
if(stu[i].score>90)stu[i].excellent=true;
cin>>stu[i].Evaluation_results;
cin>>ch;
if(ch=='Y')stu[i].contribute=true;
cin>>ch;
if(ch=='Y')stu[i].west=true;
cin>>in;
if(in!=0)stu[i].academician=true;
/*
/\ |
| 输入 | 计算奖学金
| \/
*/
if(stu[i].score>80&&stu[i].academician)stu[i].scholarship+=8000;
if(stu[i].score>85&&stu[i].Evaluation_results>80)stu[i].scholarship+=4000;
if(stu[i].excellent)stu[i].scholarship+=2000;
if(stu[i].score>85&&stu[i].west)stu[i].scholarship+=1000;
if(stu[i].Evaluation_results>80/*改这里*/&&stu[i].contribute)stu[i].scholarship+=850;
sum+=stu[i].scholarship;
}
sort(stu,stu+n,cmp);
cout<<stu[0].name<<"\n"<<stu[0].scholarship<<"\n"<<sum;
return 0;
}
```
by wanglexi @ 2023-10-10 21:30:28
谢谢大佬!
**已关**
---
by tongtong2012 @ 2023-10-11 20:05:03
此贴结!
---
by tongtong2012 @ 2023-10-11 20:07:46