有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的平均成绩,以及平均成绩最高的学生的数据(包括学号、姓名、3门课成绩、平均分数)。用c语言
时间: 2023-12-15 15:23:25 浏览: 41
以下是C语言的实现代码:
```c
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 10
#define NUM_COURSES 3
typedef struct {
int id;
char name[20];
int scores[NUM_COURSES];
float avg_score;
} Student;
int main() {
Student students[NUM_STUDENTS];
// 输入学生数据
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的学号、姓名和3门课的成绩:\n", i+1);
scanf("%d %s %d %d %d", &students[i].id, students[i].name,
&students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);
// 计算平均分数
students[i].avg_score = (float)(students[i].scores[0] + students[i].scores[1] + students[i].scores[2]) / NUM_COURSES;
}
// 计算平均成绩
float avg_scores[NUM_COURSES] = {0};
for (int i = 0; i < NUM_STUDENTS; i++) {
for (int j = 0; j < NUM_COURSES; j++) {
avg_scores[j] += students[i].scores[j];
}
}
for (int j = 0; j < NUM_COURSES; j++) {
avg_scores[j] /= NUM_STUDENTS;
printf("第%d门课的平均成绩为:%.2f\n", j+1, avg_scores[j]);
}
// 找出平均分数最高的学生
Student *max_avg_student = &students[0];
for (int i = 1; i < NUM_STUDENTS; i++) {
if (students[i].avg_score > max_avg_student->avg_score) {
max_avg_student = &students[i];
}
}
// 打印平均分数最高的学生的数据
printf("平均成绩最高的学生是:\n");
printf("学号:%d\n", max_avg_student->id);
printf("姓名:%s\n", max_avg_student->name);
printf("成绩:");
for (int j = 0; j < NUM_COURSES; j++) {
printf("%d ", max_avg_student->scores[j]);
}
printf("\n");
printf("平均分数:%.2f\n", max_avg_student->avg_score);
return 0;
}
```
运行程序后,按照提示输入10个学生的数据,即可输出3门课的平均成绩和平均成绩最高的学生的数据。
阅读全文