解决思路
- 定义结构体:定义一个结构体 Student 来存储每个学生的信息和奖金总数。
- 读取输入:读取每个学生的信息,并计算每个学生的奖金总数。
- 输出结果:输出获得最多奖金的学生的姓名、奖金总数,以及所有学生获得的奖学金总数。
#include <bits/stdc++.h> using namespace std; // 定义一个结构体来存储每个学生的信息和奖金总数 struct Student { string name; int qm; // 期末平均成绩 int bj; // 班级评议成绩 char ganbu; // 是否是学生干部 char xibu; // 是否是西部省份学生 int lunwen; // 发表的论文数 int id; // 学生的输入顺序 int sum = 0; // 奖金总数 }; // 比较函数,用于按照奖金总数对学生进行排序 bool cmp(Student a, Student b) { if (a.sum == b.sum) { return a.id < b.id; } return a.sum > b.sum; } Student a[10005]; int main() { int n; cin >> n; int totalSum = 0; // 所有学生获得的奖学金总数 // 读取每个学生的信息,并计算每个学生的奖金总数 for (int i = 0; i < n; i++) { cin >> a[i].name >> a[i].qm >> a[i].bj >> a[i].ganbu >> a[i].xibu >> a[i].lunwen; a[i].id = i; if (a[i].qm > 80 && a[i].lunwen >= 1) { a[i].sum += 8000; } if (a[i].qm > 85 && a[i].bj > 80) { a[i].sum += 4000; } if (a[i].qm > 90) { a[i].sum += 2000; } if (a[i].qm > 85 && a[i].xibu == 'Y') { a[i].sum += 1000; } if (a[i].bj > 80 && a[i].ganbu == 'Y') { a[i].sum += 850; } totalSum += a[i].sum; } // 按照奖金总数对学生进行排序 sort(a, a + n, cmp); // 输出获得最多奖金的学生的姓名、奖金总数,以及所有学生获得的奖学金总数 cout << a[0].name << endl << a[0].sum << endl << totalSum << endl; return 0; }
- ChenRuiyi 9000 28700
解决思路
- 定义结构体:定义一个结构体 Student 来存储每个学生的信息和奖金总数。
- 读取输入:读取每个学生的信息,并计算每个学生的奖金总数。
- 输出结果:输出获得最多奖金的学生的姓名、奖金总数,以及所有学生获得的奖学金总数。