编写程序,用结构体存放学生的若干信息,包括学号、姓名和3门课程的分数,从键盘输入数据,输出每门课程的总平均分,以及最高分的学生的完整数据。
时间: 2024-03-24 21:37:12 浏览: 59
好的,以下是基于C语言的程序实现:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
char id[20];
char name[20];
float score[3];
} Student;
int main() {
int n;
printf("请输入学生人数:");
scanf("%d", &n);
getchar(); // 读取换行符
// 定义学生数组并从键盘输入数据
Student students[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息(学号、姓名、3门课程的分数,用空格分隔):\n", i+1);
scanf("%s %s %f %f %f", students[i].id, students[i].name, &students[i].score[0], &students[i].score[1], &students[i].score[2]);
getchar(); // 读取换行符
}
// 计算每门课程的总平均分
float avg[3] = {0};
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
avg[j] += students[i].score[j];
}
}
for (int i = 0; i < 3; i++) {
avg[i] /= n;
printf("第%d门课程的平均分为:%.2f\n", i+1, avg[i]);
}
// 找出最高分的学生
int index = 0;
float max_score = students[0].score[0];
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
if (students[i].score[j] > max_score) {
max_score = students[i].score[j];
index = i;
}
}
}
printf("最高分的学生信息为:学号:%s,姓名:%s,分数:%.2f %.2f %.2f\n", students[index].id, students[index].name, students[index].score[0], students[index].score[1], students[index].score[2]);
return 0;
}
```
这段程序实现了从键盘输入学生信息、计算每门课程的总平均分以及找出最高分的学生的功能。在输入学生信息时,需要按照指定的格式输入,即学号、姓名、3门课程的分数,用空格分隔。
阅读全文