C++ 代码实现:奖学金计算
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Student {
string name;
int avgScore;
int evalScore;
bool isCadre;
bool isWestern;
int paperNum;
int scholarship;
};
bool compare(Student s1, Student s2) {
return s1.scholarship > s2.scholarship;
}
int main() {
int N;
cin >> N;
vector<Student> students(N);
for (int i = 0; i < N; i++) {
cin >> students[i].name >> students[i].avgScore >> students[i].evalScore
>> students[i].isCadre >> students[i].isWestern >> students[i].paperNum;
students[i].scholarship = 0;
}
for (int i = 0; i < N; i++) {
if (students[i].avgScore > 80 && students[i].paperNum >= 1) {
students[i].scholarship += 8000;
}
if (students[i].avgScore > 85 && students[i].evalScore > 80) {
students[i].scholarship += 4000;
}
if (students[i].avgScore > 90) {
students[i].scholarship += 2000;
}
if (students[i].avgScore > 85 && students[i].isWestern) {
students[i].scholarship += 1000;
}
if (students[i].evalScore > 80 && students[i].isCadre) {
students[i].scholarship += 850;
}
}
sort(students.begin(), students.end(), compare);
cout << students[0].name << endl;
cout << students[0].scholarship << endl;
int totalScholarship = 0;
for (int i = 0; i < N; i++) {
totalScholarship += students[i].scholarship;
}
cout << totalScholarship << endl;
return 0;
}
代码说明:
- 结构体定义: 使用
Student结构体存储每个学生的信息,包括姓名、期末平均成绩、班级评议成绩、是否学生干部、是否西部省份学生、发表论文数量以及奖学金总额。 - 输入数据: 从标准输入读取学生数量 N 和每个学生的信息,并初始化每个学生的奖学金总额为 0。
- 计算奖学金: 遍历所有学生,根据每个学生满足的条件计算其可获得的奖学金金额并累加到
scholarship属性中。 - 排序: 使用
sort函数按照奖学金总额降序排列所有学生。 - 输出结果: 输出获得最高奖学金的学生姓名和奖金总额,以及所有学生奖学金总额。
示例:
输入:
4
YaoLin 87 82 Y N 0
ChenRuiyi 88 78 N Y 1
LiXin 92 88 N N 0
ZhangQin 83 87 Y N 1
输出:
ChenRuiyi
9000
28700
原文地址: https://www.cveoy.top/t/topic/pUMt 著作权归作者所有。请勿转载和采集!