C++信息学奥赛1839:【05NOIP提高组】谁拿了最多奖学金

C++信息学奥赛1839:【05NOIP提高组】谁拿了最多奖学金_第1张图片
这段代码是一个奖学金评选程序,根据学生的各项指标计算出最高奖学金金额和获得该奖学金的学生姓名。

具体解析如下:

#include 
#include 
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;
}

代码首先定义了各种变量,包括整数变量用于存储成绩和数量信息,字符变量用于存储特殊情况的标志,以及字符串变量用于存储学生姓名。然后通过 cin 输入学生人数。

接下来,通过一个 for 循环,按顺序输入每个学生的姓名和各项指标的值。

在循环中,根据规定的条件判断学生是否满足获得奖学金的条件,并根据不同条件累加对应的奖金到 BonuBonus 变量中。

在每次循环结束后,通过比较 Bonu 和当前最大奖学金金额 max 的大小,更新最大奖学金金额 max,记录获得该奖学金的学生的序号 item 和姓名 maxname

循环结束后,输出最高奖学金的学生姓名 maxname、最高奖学金金额 max 和所有学生的奖学金总额 Bonus

该代码的目的是根据学生的各项指标计算奖学金金额,并输出获得最高奖学金的学生姓名和金额,以及所有学生的奖学金总额。

你可能感兴趣的:(C++信息学奥赛,c++,java,算法)