原题链接:谁拿了最多奖学金
解题思路:
注意事项:
参考代码:
#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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复