P1051谁拿了最多奖学金-题解
哈哈,本睿智,呸,弱智第一次写题解。\ 怎么说呢?代码有点偏c风格。\ 然后我最弱智的一点是......我把西部奖学金搞成了2000\ 于是当我看到10个红的wa时一直没想明白\ 不说废话了,上代码!看注释\
#include<cstdio>
#include<iostream>\\不建议用bits,csf能用bits吗???
using namespace std;
struct student{\\定义student类型
char xinming[30];\\放名字
int qimo;\\期末的成绩
int banji;\\班级的成绩
char xsgb;\\是不是学生干部
char west;\\是不是西部学生
int lunwun;\\论文数量
};
student people[150];\\上数组!
int n,number,maxmoney,total=0;\\n是学生个数,number存储那个拿钱最多(欧皇)的位置,maxmoney就是他拿的最多的钱,total就是所有的钱
int main(){
cin>>n;\\输入有几个学生
for(int i=0;i<n;i++){\\循环,走起
scanf("%s%d%d %c %c %d",people[i].xinming,&people[i].qimo,&people[i].banji,&people[i].xsgb,&people[i].west,&people[i].lunwun);\\超强scanf语句
int jxj=0;\\定义那个人的奖学金并且初始化为0
if(people[i].qimo>80&&people[i].lunwun>0)
jxj+=8000;\\院士奖学金条件
if(people[i].qimo>85&&people[i].banji>80) jxj+=4000;\\五四奖学金条件
if(people[i].qimo>90) jxj+=2000;\\成绩优秀奖条件
if(people[i].qimo>85&&people[i].west=='Y') jxj+=1000;\\西部奖学金条件
if(people[i].banji>80&&people[i].xsgb=='Y') jxj+=850;\\班级贡献奖条件
if(jxj>maxmoney){\\如果那个人最大,或者大于maxmoney
number=i;\\存储他的位置
maxmoney=jxj;\\存储他拿了多少钱
}
total+=jxj;\\存储学校总共发出了多少奖学金
}
puts(people[number].xinming);\\输出那个欧皇的名字
printf("%d\n%d",maxmoney,total);\\输出那个人拿了多少钱,和学校花了多少钱
return 0;\\溜了!
}