解题思路:
注意事项:
参考代码:#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分
0 人评分