一个班上有30名学生,每个学生的数据作为一个记录,每个记录包括学号、姓名、三门课程的成绩和三门课程平均成绩。从键盘输入学生的学号、姓名及三门课的成绩。要求打印三门课程平均成绩最高分的学生记录。用C语言编写程序
时间: 2025-01-18 16:02:35 浏览: 39
在C语言中,我们可以创建一个结构体来表示学生的信息,并使用数组或者动态内存分配来存储所有学生的数据。然后遍历这个结构体数组,找出平均成绩最高的学生。以下是简单的步骤和伪代码:
```c
#include <stdio.h>
#include <string.h>
// 定义学生信息结构
typedef struct {
int id;
char name[50];
float score1, score2, score3; // 三门课程的成绩
float average; // 平均成绩
} Student;
void inputStudent(Student* student) {
printf("请输入学生的学号、姓名及三门课的成绩:\n");
scanf("%d", &student->id);
fgets(student->name, sizeof(student->name), stdin); // 读取姓名,注意去掉多余换行符
scanf("%f %f %f", &student->score1, &student->score2, &student->score3);
}
float calculateAverage(Student student) {
return (student.score1 + student.score2 + student.score3) / 3.0;
}
int findHighestAverage(Student students[], int size) {
Student maxStudent = students[0];
for(int i = 1; i < size; i++) {
if (calculateAverage(students[i]) > maxStudent.average) {
maxStudent = students[i];
}
}
return maxStudent;
}
int main() {
const int MAX_STUDENTS = 30;
Student students[MAX_STUDENTS];
// 输入所有学生信息
for(int i = 0; i < MAX_STUDENTS; i++) {
inputStudent(&students[i]);
students[i].average = calculateAverage(students[i]);
}
// 找到并打印最高平均分的学生
Student highestAverageStudent = findHighestAverage(students, MAX_STUDENTS);
printf("平均成绩最高的学生记录:\n");
printf("学号:%d\n", highestAverageStudent.id);
printf("姓名:%s\n", highestAverageStudent.name);
printf("平均成绩:%f\n", highestAverageStudent.average);
return 0;
}
阅读全文
相关推荐











