原题链接:谁拿了最多奖学金
解题思路:
注意事项:
参考代码:
#include <stdio.h>
struct Student {
char name[20]; // 姓名
int final_grade; // 期末平均成绩
int class_grade; // 班级评议成绩
char student_cadre; // 是否学生干部
char western; // 是否西部省份
int thesis; // 论文数
int scholarship; // 总奖学金
};
int getScholarship(struct Student stu) {
int scholarship = 0;
if (stu.final_grade > 80 && stu.thesis >= 1) { // 院士奖学金
scholarship += 8000;
}
if (stu.final_grade > 85 && stu.class_grade > 80) { // 五四奖学金
scholarship += 4000;
}
if (stu.final_grade > 90) { // 成绩优秀奖
scholarship += 2000;
}
if (stu.final_grade > 85 && stu.western == 'Y') { // 西部奖学金
scholarship += 1000;
}
if (stu.class_grade > 80 && stu.student_cadre == 'Y') { // 班级贡献奖
scholarship += 850;
}
return scholarship;
}
int main() {
int n;
scanf("%d", &n);
struct Student stu[n];
int sum = 0;
int index = 0;
for (int i = 0; i < n; i++) {
scanf("%s %d %d %c %c %d", stu[i].name, &stu[i].final_grade,
&stu[i].class_grade, &stu[i].student_cadre, &stu[i].western, &stu[i].thesis);
stu[i].scholarship = getScholarship(stu[i]); // 计算该学生奖学金
sum += stu[i].scholarship; // 统计总的奖学金
if (index != i && stu[i].scholarship > stu[index].scholarship) {
index = i; // 记录最高奖学金学生索引
}
}
printf("%s\n", stu[index].name);
printf("%d\n", stu[index].scholarship);
printf("%d\n", sum);
}0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复