有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)。用C语言解答
时间: 2023-12-15 14:13:01 浏览: 48
好的,让我来帮您解答这个问题。
首先,我们需要定义一个结构体来存储每个学生的数据。结构体中包括学号、姓名和3门课的成绩。
```c
struct student {
int id; // 学号
char name[20]; // 姓名
float score[3]; // 3门课的成绩
};
```
然后,我们需要定义一个数组来存储这10个学生的数据。
```c
struct student stu[10];
```
接下来,我们需要从键盘输入这10个学生的数据,并计算出3门课的总平均成绩。
```c
float sum[3] = {0}; // 3门课的总成绩
for (int i = 0; i < 10; i++) {
printf("请输入第%d个学生的数据:\n", i+1);
printf("学号:");
scanf("%d", &stu[i].id);
printf("姓名:");
scanf("%s", stu[i].name);
for (int j = 0; j < 3; j++) {
printf("第%d门课的成绩:", j+1);
scanf("%f", &stu[i].score[j]);
sum[j] += stu[i].score[j];
}
}
float avg[3] = {0}; // 3门课的平均成绩
for (int i = 0; i < 3; i++) {
avg[i] = sum[i] / 10;
printf("第%d门课的平均成绩为:%.2f\n", i+1, avg[i]);
}
```
最后,我们需要找出最高分的学生的数据,并输出。
```c
int max_index = 0; // 最高分的学生的下标
float max_score = 0; // 最高分
for (int i = 0; i < 10; i++) {
float total_score = 0; // 该学生的总成绩
for (int j = 0; j < 3; j++) {
total_score += stu[i].score[j];
}
if (total_score > max_score) {
max_score = total_score;
max_index = i;
}
}
printf("最高分的学生的数据为:\n");
printf("学号:%d\n", stu[max_index].id);
printf("姓名:%s\n", stu[max_index].name);
printf("三门课成绩:%.2f %.2f %.2f\n", stu[max_index].score[0],
stu[max_index].score[1],
stu[max_index].score[2]);
```
完整代码如下: