解题思路:
注意事项:
参考代码:#include <stdio.h>
struct student {
int num; // 学号
char name[10]; // 姓名,长度10
int score[3]; // 3门课的成绩
int total; // 总成绩
};
// 输入学生数据
void input(struct student stu[], int n) {
for (int i = 0; i < n; i++) {
scanf("%d", &stu[i].num); // 输入学号
scanf("%s", stu[i].name); // 输入姓名
scanf("%d %d %d", &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
// 计算总分
stu[i].total = stu[i].score[0] + stu[i].score[1] + stu[i].score[2];
}
}
// 计算每门课的平均成绩
void ave(struct student stu[], int n) {
int sum1 = 0, sum2 = 0, sum3 = 0;
for (int i = 0; i < n; i++) {
sum1 += stu[i].score[0];
sum2 += stu[i].score[1];
sum3 += stu[i].score[2];
}
// 输出每门课的平均成绩
printf("%d %d %d\n", sum1 / n, sum2 / n, sum3 / n);
}
// 查找最高分的学生
void max(struct student stu[], int n) {
int max = stu[0].total;
int maxindex = 0;
for (int i = 1; i < n; i++) { // 从索引1开始比较
if (stu[i].total > max) {
max = stu[i].total;
maxindex = i;
}
}
// 输出最高分的学生信息
printf("%d %s %d %d %d\n", stu[maxindex].num, stu[maxindex].name,
stu[maxindex].score[0], stu[maxindex].score[1], stu[maxindex].score[2]);
}
int main() {
struct student stu[100]; // 定义学生数组
int n;
scanf("%d", &n); // 输入学生人数
input(stu, n); // 输入学生数据
ave(stu, n); // 计算每门课的平均成绩
max(stu, n); // 查找并输出总分最高的学生
return 0;
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复