2.在当前目录下的磁盘文件“a1.dat”上存有 10 个学生的数据,已知 student 结构体定义如下: struct student { // 建立结构体类型 struct student char xm[10]; // 姓名 int xh; // 学号 int zf; // 总分 char dz[15]; // 地址 } 编写程序实现:打印输出第 1,3,5,7,9 个学生数据,并求出 5 个学生的平均总分
时间: 2024-01-18 21:04:09 浏览: 79
以下是可以实现上述功能的代码:
```c
#include <stdio.h>
struct student {
char xm[10]; // 姓名
int xh; // 学号
int zf; // 总分
char dz[15]; // 地址
};
int main() {
FILE *fp;
struct student stu[10];
int i, sum = 0;
// 打开文件
if ((fp = fopen("a1.dat", "rb")) == NULL) {
printf("文件打开失败!\n");
return 0;
}
// 读取数据并输出
for (i = 0; i < 10; i++) {
fread(&stu[i], sizeof(struct student), 1, fp);
if (i % 2 == 0) {
printf("姓名:%s 学号:%d 总分:%d 地址:%s\n", stu[i].xm, stu[i].xh, stu[i].zf, stu[i].dz);
}
sum += stu[i].zf;
}
// 计算平均总分并输出
printf("5个学生的平均总分为:%.2f\n", sum / 5.0);
// 关闭文件
fclose(fp);
return 0;
}
```
上述代码中,我们首先定义了 `struct student` 结构体类型,然后打开文件并读取其中的数据。根据题意,我们只需要输出第 1,3,5,7,9 个学生的数据,因此在读取数据时使用了 `if (i % 2 == 0)` 判断条件,只有当 `i` 为偶数时才输出该学生的数据。
最后,我们将所有学生的总分累加起来,计算平均总分并输出。最后不要忘记关闭文件。
阅读全文