c语言有5个学生,每个学生的数据包括学号、姓名、3门课的成绩。从键盘输入5个学生数据,要求输出3门课总平均成绩,以及分数最高的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。 输入格式: 每行输入一个学生的学号、姓名和三门课成绩,用空格分隔,一共输入5个学生信息。 输出格式: 第一行输出3门课总平均成绩,成绩小数点后保留两位。 第二行输出分数最高的学生的数据,成绩小数点后保留两位。
时间: 2023-12-15 13:08:14 浏览: 137
以下是该题的C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
struct Student {
char id[10];
char name[20];
float grade[3];
float average;
};
int main() {
struct Student student[5];
float total[3] = {0};
float max_grade = 0;
int max_index = 0;
// 输入学生信息
for (int i = 0; i < 5; i++) {
printf("请输入第%d个学生的学号、姓名和三门课成绩(用空格分隔):\n", i + 1);
scanf("%s %s %f %f %f", student[i].id, student[i].name, &student[i].grade[0], &student[i].grade[1], &student[i].grade[2]);
student[i].average = (student[i].grade[0] + student[i].grade[1] + student[i].grade[2]) / 3.0;
// 更新总成绩
total[0] += student[i].grade[0];
total[1] += student[i].grade[1];
total[2] += student[i].grade[2];
// 找到分数最高的学生
if (student[i].average > max_grade) {
max_grade = student[i].average;
max_index = i;
}
}
// 输出3门课总平均成绩
printf("3门课总平均成绩为:%.2f %.2f %.2f\n", total[0] / 5.0, total[1] / 5.0, total[2] / 5.0);
// 输出分数最高的学生信息
printf("分数最高的学生的数据为:\n");
printf("学号:%s\n", student[max_index].id);
printf("姓名:%s\n", student[max_index].name);
printf("成绩:%.2f %.2f %.2f\n", student[max_index].grade[0], student[max_index].grade[1], student[max_index].grade[2]);
printf("平均分数:%.2f\n", student[max_index].average);
return 0;
}
```
例如,输入以下数据:
```
001 Tom 80.5 85.5 90
002 Jack 75 90 85.5
003 Mary 95 90.5 92
004 Lucy 88.5 92 89.5
005 John 90 80 85
```
则输出结果为:
```
3门课总平均成绩为:85.40 87.00 88.20
分数最高的学生的数据为:
学号:003
姓名:Mary
成绩:95.00 90.50 92.00
平均分数:92.17
```
阅读全文