谁拿了最多奖学金 {我的程序}
查看原帖
谁拿了最多奖学金 {我的程序}
1055015
yuyuigyugty楼主2023/12/3 15:28
#include <iostream>
#include <string>
using namespace std;

int main() {
    int n; // 定义整数变量n,用于存储学生人数
    cin >> n; // 输入学生人数并存储到n中

    int term; // 定义整数变量term,用于存储学期成绩
    int review; // 定义整数变量review,用于存储论文成绩
    char Student; // 定义字符变量Student,用于存储是否有困难家庭情况
    char Western; // 定义字符变量Western,用于存储是否参加过西部计划
    int Thesis; // 定义整数变量Thesis,用于存储论文是否被发表
    long Bonu = 0; // 定义长整数变量Bonu,用于存储奖学金金额
    long Bonus = 0; // 定义长整数变量Bonus,用于累加所有学生的奖学金金额

    int item; // 定义整数变量item,用于记录获得最高奖学金的学生的序号
    string name; // 定义字符串变量name,用于存储学生姓名
    string maxname; // 定义字符串变量maxname,用于存储获得最高奖学金的学生姓名
    int max = 0; // 定义整数变量max,用于存储最高奖学金金额,初始值为0

    for (int i = 0; i < n; i++) { // 循环输入每个学生的信息
        cin >> name >> term >> review >> Student >> Western >> Thesis;

        // 根据各项条件依次计算奖学金金额并累加到Bonu和Bonus中
        if (term > 80 && Thesis > 0) {
            Bonu += 8000;
            Bonus += 8000;
        }
        if (term > 85 && review > 80) {
            Bonu += 4000;
            Bonus += 4000;
        }
        if (term > 90) {
            Bonu += 2000;
            Bonus += 2000;
        }
        if (term > 85 && Western == 'Y') {
            Bonu += 1000;
            Bonus += 1000;
        }
        if (review > 80 && Student == 'Y') {
            Bonu += 850;
            Bonus += 850;
        }

        // 判断当前学生的奖学金金额是否大于当前最大值max,若是,则更新max、item和maxname
        if (Bonu > max) {
            max = Bonu;
            item = i;
            maxname = name;
        }
        
        Bonu = 0; // 将Bonu重置为0,准备计算下一个学生的奖学金金额
    }

    // 输出最高奖学金的学生姓名、最高奖学金金额以及所有学生的奖学金总额
    cout << maxname << endl;
    cout << max << endl;
    cout << Bonus;

    return 0;
}

程序差不多就这样,一堆if。

2023/12/3 15:28
加载中...