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;\\溜了!
}