某班有 10 名学生,每名学生的数据包括学号、姓名、3 门课的成绩,从键盘输入 10 名学生的数据,要求输出每门课的平均成绩、每名学生的平均成绩并输出最高分学生的数据(包括学号、姓名、3 门课的成绩、平均成绩),用c语言
时间: 2023-12-15 12:25:08 浏览: 67
好的,这是一个比较基础的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[10];
float avg_score[3] = {0}; // 每门课的平均成绩
float max_score = 0; // 最高分数
int max_index = 0; // 最高分数对应的学生索引
// 输入学生数据
for (int i = 0; i < 10; i++) {
printf("请输入第%d个学生的学号、姓名、3门课的成绩:\n", i + 1);
scanf("%d %s %f %f %f", &stu[i].id, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
// 计算每个学生的平均分数
stu[i].avg_score = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
// 计算每门课的平均分数
avg_score[0] += stu[i].score[0] / 10.0;
avg_score[1] += stu[i].score[1] / 10.0;
avg_score[2] += stu[i].score[2] / 10.0;
// 判断最高分数学生
if (stu[i].avg_score > max_score) {
max_score = stu[i].avg_score;
max_index = i;
}
}
// 输出每门课的平均成绩
printf("每门课的平均成绩:\n");
printf("第1门课:%.2f\n", avg_score[0]);
printf("第2门课:%.2f\n", avg_score[1]);
printf("第3门课:%.2f\n", avg_score[2]);
// 输出每个学生的平均成绩
printf("每名学生的平均成绩:\n");
for (int i = 0; i < 10; i++) {
printf("%s的平均成绩为%.2f\n", stu[i].name, stu[i].avg_score);
}
// 输出最高分数学生的数据
printf("最高分数学生的数据:\n");
printf("学号:%d\n", stu[max_index].id);
printf("姓名:%s\n", stu[max_index].name);
printf("第1门课成绩:%.2f\n", stu[max_index].score[0]);
printf("第2门课成绩:%.2f\n", stu[max_index].score[1]);
printf("第3门课成绩:%.2f\n", stu[max_index].score[2]);
printf("平均成绩:%.2f\n", stu[max_index].avg_score);
return 0;
}
```
需要注意的是,每名学生的数据包括学号、姓名、3门课的成绩,所以在结构体中要定义这些成员变量。同时,需要用一个循环来输入10名学生的数据,并且计算每门课的平均成绩、每个学生的平均成绩、以及判断最高分数学生的数据。最后,按照题目要求输出结果即可。
阅读全文