C语言编写有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的平均成绩,以及平均成绩最高的学生的数据(包括学号、姓名、3门课成绩、平均分数)
时间: 2023-12-15 15:08:22 浏览: 57
以下是一个用C语言实现的解决方案:
```C
#include <stdio.h>
#include <string.h>
struct Student {
int id;
char name[20];
float score[3];
float avg;
};
int main() {
struct Student students[10];
float avgScore[3] = {0};
float highestAvg = 0;
int highestIndex = 0;
// 输入学生数据
for (int i = 0; i < 10; i++) {
printf("请输入第%d个学生的学号、姓名、三门课成绩:\n", i + 1);
scanf("%d %s %f %f %f", &students[i].id, students[i].name,
&students[i].score[0], &students[i].score[1], &students[i].score[2]);
// 计算平均分数
students[i].avg = (students[i].score[0] + students[i].score[1] + students[i].score[2]) / 3;
// 计算每门课的平均分数
avgScore[0] += students[i].score[0] / 10;
avgScore[1] += students[i].score[1] / 10;
avgScore[2] += students[i].score[2] / 10;
// 找出平均分数最高的学生
if (students[i].avg > highestAvg) {
highestAvg = students[i].avg;
highestIndex = i;
}
}
// 输出每门课程的平均分数
printf("每门课的平均分数为:%.2f %.2f %.2f\n", avgScore[0], avgScore[1], avgScore[2]);
// 输出平均分数最高的学生信息
printf("平均分数最高的学生是:\n");
printf("学号:%d\n", students[highestIndex].id);
printf("姓名:%s\n", students[highestIndex].name);
printf("三门课成绩:%.2f %.2f %.2f\n", students[highestIndex].score[0], students[highestIndex].score[1], students[highestIndex].score[2]);
printf("平均分数:%.2f\n", students[highestIndex].avg);
return 0;
}
```
该程序定义了一个名为`Student`的结构体,其中包含学号、姓名、3门课的成绩和平均分数。然后,在`main()`函数中定义了一个长度为10的`students`数组,用于存储10个学生的数据。通过循环,依次输入每个学生的数据,并计算每个学生的平均分数。同时,使用一个`avgScore`数组来记录每门课的平均分数,并找出平均分数最高的学生。
最后,程序输出每门课的平均分数以及平均分数最高的学生的详细信息。
阅读全文