1.一个班上有30名学生,每个学生的数据作为一个记录,每个记录包括学号、姓名、三门课程的成绩和三门课程平均成绩。从键盘输入学生的学号、姓名及三门课的成绩。要求打印三门课程平均成绩最高分的学生记录。用C语言编写
时间: 2024-10-14 18:04:47 浏览: 59
学生信息管理系统,1、每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。
在C语言中,我们可以创建一个结构体来表示每个学生的信息,然后用数组或者动态内存分配来存储所有学生的数据。以下是大致的步骤:
首先,定义一个学生结构体(struct Student),包含学号、姓名、三门课程的成绩(假设为`int`类型)和平均成绩。
```c
typedef struct {
int id;
char name[50];
int scores[3]; // 学生的三门课程成绩
float average; // 平均成绩
} Student;
```
接下来,你可以使用`fgets`函数从键盘读取用户输入的数据,并填充到学生信息中:
```c
void inputStudent(Student* student) {
scanf("%d", &student->id);
fgets(student->name, sizeof(student->name), stdin); // 去除回车符
for (int i = 0; i < 3; i++) {
scanf("%d", &student->scores[i]);
}
calculateAverage(student->scores, &student->average);
}
float calculateAverage(int scores[], float* average) {
*average = (scores[0] + scores[1] + scores[2]) / 3.0f;
return *average;
}
```
为了找出平均成绩最高的学生,我们需要遍历整个学生数组,将最高平均成绩的学生记录保存下来:
```c
// 假设students[]是存储了30名学生的数组
Student highestAverageStudent;
highestAverageStudent.average = 0;
for (int i = 0; i < 30; i++) {
if (students[i].average > highestAverageStudent.average) {
highestAverageStudent = students[i];
}
}
printf("学号: %d, 姓名: %s, 平均成绩: %.2f\n",
highestAverageStudent.id, highestAverageStudent.name, highestAverageStudent.average);
```
最后,记得处理文件结束(EOF)情况以及在输入结束后关闭标准输入流(stdin)。
```c
#include "stdio.h"
// 其他部分...
int main() {
Student students[30]; // 或者用动态内存分配
for (int i = 0; i < 30; i++) {
inputStudent(&students[i]);
}
// ...其他处理...
return 0;
}
```
阅读全文