用c语言写出以下代码:一个班上有30名学生,每个学生的数据作为一个记录,每个记录包括学号、姓名、三门课程的成绩和三门课程平均成绩。从键盘输入学生的学号、姓名及三门课的成绩。要求打印三门课程平均成绩最高分的学生记录。
时间: 2024-09-14 09:01:45 浏览: 121
以下是一个C语言程序的示例,实现了上述要求:
```c
#include <stdio.h>
// 定义学生结构体
typedef struct {
int id; // 学号
char name[50]; // 姓名
float scores[3]; // 三门课程成绩
float average; // 平均成绩
} Student;
// 函数声明
void calculateAverage(Student *s);
void printStudent(const Student *s);
int main() {
const int studentCount = 30;
Student students[studentCount]; // 创建30个学生记录的数组
int i;
// 从键盘输入学生数据
for (i = 0; i < studentCount; ++i) {
printf("请输入第%d个学生的学号、姓名及三门课成绩:\n", i + 1);
scanf("%d %s %f %f %f", &students[i].id, students[i].name, &students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);
calculateAverage(&students[i]); // 计算平均成绩
}
// 查找平均成绩最高的学生
Student *topStudent = students;
for (i = 1; i < studentCount; ++i) {
if (students[i].average > topStudent->average) {
topStudent = &students[i];
}
}
// 打印平均成绩最高的学生记录
printStudent(topStudent);
return 0;
}
// 计算学生平均成绩的函数
void calculateAverage(Student *s) {
int i;
float sum = 0;
for (i = 0; i < 3; ++i) {
sum += s->scores[i];
}
s->average = sum / 3;
}
// 打印学生信息的函数
void printStudent(const Student *s) {
printf("\n学号:%d\n姓名:%s\n课程成绩:%.2f %.2f %.2f\n平均成绩:%.2f\n",
s->id, s->name, s->scores[0], s->scores[1], s->scores[2], s->average);
}
```
这段代码首先定义了一个`Student`结构体来存储每个学生的信息,包括学号、姓名、三门课程成绩和平均成绩。程序中包含了两个辅助函数:`calculateAverage`用于计算学生的平均成绩,`printStudent`用于打印一个学生的记录。
主函数`main`中,首先声明了一个有30个学生记录的数组,并通过循环从键盘输入每个学生的信息。之后,程序遍历这个数组,寻找平均成绩最高的学生记录,并打印出来。
阅读全文