有5个学生,每个学生有3门课的成绩(均为float类型),平均成绩(float类型),学号(int类型),姓名(char [40]类型),性别(枚举类型sex)这些属性,从键盘输入每个学生的这些数据,计算出平均成绩,将每个学生的数据存放在磁盘文件stud中。
时间: 2023-03-16 20:47:23 浏览: 95
有5个学生,么个学生有三门课成绩,从键盘键入以上数据,存放在文件中
5星 · 资源好评率100%
好的,以下是用中文回复:
首先,我们需要定义一个结构体来存储每个学生的数据,包括成绩、平均成绩、学号、姓名和性别等属性。结构体的定义如下:
```
typedef enum { MALE, FEMALE } sex;
typedef struct {
float scores[3]; // 三门课的成绩
float average; // 平均成绩
int id; // 学号
char name[40]; // 姓名
sex gender; // 性别
} Student;
```
接下来,我们可以使用循环来依次输入每个学生的数据,并计算出平均成绩。具体代码如下:
```
#include <stdio.h>
int main() {
Student students[5]; // 定义一个包含5个学生的数组
// 循环输入每个学生的数据
for (int i = ; i < 5; i++) {
printf("请输入第%d个学生的数据:\n", i+1);
// 输入学号、姓名和性别
printf("学号:");
scanf("%d", &students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
printf("性别(表示男,1表示女):");
int gender;
scanf("%d", &gender);
students[i].gender = gender == ? MALE : FEMALE;
// 输入三门课的成绩,并计算平均成绩
float sum = ;
for (int j = ; j < 3; j++) {
printf("第%d门课的成绩:", j+1);
scanf("%f", &students[i].scores[j]);
sum += students[i].scores[j];
}
students[i].average = sum / 3;
printf("\n");
}
// 将每个学生的数据存放在磁盘文件stud中
FILE *fp = fopen("stud", "wb");
fwrite(students, sizeof(Student), 5, fp);
fclose(fp);
return ;
}
```
最后,我们使用文件操作将每个学生的数据存放在磁盘文件stud中。具体代码如上所示,使用fwrite函数将整个数组写入文件中即可。
阅读全文