用c语言写代码有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的平均成绩,以及平均成绩最高的学生的数据(包括学号、姓名、3门课成绩、平均分数)。
时间: 2023-12-15 14:23:48 浏览: 68
C语言程序设计-输入2个学生3门课的成绩,计算学生成绩平均分,课程平均分和最高分.
5星 · 资源好评率100%
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 10
#define NUM_COURSES 3
struct Student {
int id;
char name[20];
float grades[NUM_COURSES];
float avg_grade;
};
int main() {
struct Student students[NUM_STUDENTS];
float avg_grades[NUM_COURSES];
float max_avg_grade = 0.0;
int max_avg_grade_index = -1;
// 从键盘输入学生数据
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的学号、姓名和3门课的成绩:", i+1);
scanf("%d %s %f %f %f", &students[i].id, students[i].name,
&students[i].grades[0], &students[i].grades[1], &students[i].grades[2]);
// 计算平均成绩
float sum = 0.0;
for (int j = 0; j < NUM_COURSES; j++) {
sum += students[i].grades[j];
}
students[i].avg_grade = sum / NUM_COURSES;
}
// 计算每门课的平均成绩
for (int i = 0; i < NUM_COURSES; i++) {
float sum = 0.0;
for (int j = 0; j < NUM_STUDENTS; j++) {
sum += students[j].grades[i];
}
avg_grades[i] = sum / NUM_STUDENTS;
}
// 找出平均成绩最高的学生
for (int i = 0; i < NUM_STUDENTS; i++) {
if (students[i].avg_grade > max_avg_grade) {
max_avg_grade = students[i].avg_grade;
max_avg_grade_index = i;
}
}
// 打印每门课的平均成绩
printf("每门课的平均成绩:\n");
for (int i = 0; i < NUM_COURSES; i++) {
printf("第%d门课的平均成绩:%.2f\n", i+1, avg_grades[i]);
}
// 打印平均成绩最高的学生的数据
printf("平均成绩最高的学生的数据:\n");
printf("学号:%d\n", students[max_avg_grade_index].id);
printf("姓名:%s\n", students[max_avg_grade_index].name);
printf("成绩:%.2f %.2f %.2f\n", students[max_avg_grade_index].grades[0],
students[max_avg_grade_index].grades[1], students[max_avg_grade_index].grades[2]);
printf("平均分数:%.2f\n", students[max_avg_grade_index].avg_grade);
return 0;
}
```
运行程序后,依次输入每个学生的数据,即可得到每门课的平均成绩和平均成绩最高的学生的数据。
阅读全文