用c语言写出如下代码:有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生的数据,要求打印出3门课的平均成绩,以及最高分学生的数据(包括学号、姓名3门课成绩、平均成绩)
时间: 2023-12-15 12:24:56 浏览: 125
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
struct student {
int id;
char name[20];
float score[3];
float avg_score;
};
int main() {
struct student stu[5];
float avg[3] = {0};
float max_score = 0;
int max_index = 0;
// 输入学生数据
for (int i = 0; i < 5; i++) {
printf("请输入第%d个学生的学号:", i+1);
scanf("%d", &stu[i].id);
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", stu[i].name);
printf("请输入第%d个学生的3门课成绩:", i+1);
for (int j = 0; j < 3; j++) {
scanf("%f", &stu[i].score[j]);
avg[j] += stu[i].score[j];
}
// 计算平均成绩
stu[i].avg_score = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3;
printf("\n");
}
// 计算平均成绩
for (int j = 0; j < 3; j++) {
avg[j] /= 5;
}
// 找到最高分学生
for (int i = 0; i < 5; i++) {
float sum_score = stu[i].score[0] + stu[i].score[1] + stu[i].score[2];
if (sum_score > max_score) {
max_score = sum_score;
max_index = i;
}
}
// 输出结果
printf("3门课的平均成绩:\n");
for (int j = 0; j < 3; j++) {
printf("第%d门课的平均成绩为:%.2f\n", j+1, avg[j]);
}
printf("\n");
printf("最高分学生的数据如下:\n");
printf("学号:%d\n", stu[max_index].id);
printf("姓名:%s\n", stu[max_index].name);
printf("3门课成绩:%.2f, %.2f, %.2f\n", stu[max_index].score[0], stu[max_index].score[1], stu[max_index].score[2]);
printf("平均成绩:%.2f\n", stu[max_index].avg_score);
return 0;
}
```
这个程序首先定义了一个 `student` 结构体来存储学生的数据,包括学号、姓名、3门课成绩和平均成绩。然后定义了一个长度为5的 `stu` 数组来存储5个学生的数据。
接下来程序使用 `for` 循环来依次输入每个学生的数据,并计算每门课的平均成绩。计算平均成绩的方法是先将每个学生的3门课成绩相加,然后除以3。
然后程序再用一个 `for` 循环来计算每门课的平均成绩,将每个学生的3门课成绩相加。
接着程序使用一个 `for` 循环来找到最高分学生。计算方法是将每个学生的3门课成绩相加,然后和当前最高分比较,如果大于当前最高分,则更新最高分和最高分学生的索引。
最后程序输出3门课的平均成绩和最高分学生的数据。
阅读全文
相关推荐
















