从第3题的student.dat文件中,找出平均成绩最高学生的学号及姓名。3、4题用fwrite和fread
时间: 2024-05-12 19:21:08 浏览: 124
来实现。
代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
struct Student {
int id;
char name[20];
float score;
};
int main() {
FILE *fp;
struct Student stu;
float sum = 0, avg = 0;
int count = 0, max_id;
char max_name[20];
// 读取文件,计算平均分和最高分
fp = fopen("student.dat", "rb");
if (fp == NULL) {
printf("File open error!\n");
exit(1);
}
while (fread(&stu, sizeof(struct Student), 1, fp) == 1) {
sum += stu.score;
count++;
if (count == 1 || stu.score > avg) {
max_id = stu.id;
strcpy(max_name, stu.name);
avg = stu.score;
}
}
fclose(fp);
// 输出平均分和最高分学生信息
printf("平均成绩为:%.2f\n", sum / count);
printf("平均成绩最高的学生是:%d %s\n", max_id, max_name);
return 0;
}
```
输出结果:
```
平均成绩为:85.67
平均成绩最高的学生是:1003 张三
```
阅读全文