使用结构体数组存放学生成绩信息,至少包含学号(整形),语文、数学、英语、物理、化学这五门课程的百分制成绩。编写程序实现: (1) 编写一个函数用来输入所有学生的信息(当输入的学号为0时,结束输入); (2)并将每个学生的全部数据保存到磁盘上的二进制文件StudentGrade.dat中。
时间: 2024-04-10 18:28:25 浏览: 71
可以按照以下步骤来实现该程序:
1. 定义结构体类型`Student`,包含学号和五门课程的成绩信息。
```c
typedef struct {
int student_id;
int chinese;
int math;
int english;
int physics;
int chemistry;
} Student;
```
2. 编写一个函数`inputStudentInfo`用来输入所有学生的信息,并将信息保存到结构体数组`students`中。当输入的学号为0时,结束输入。
```c
void inputStudentInfo(Student students[], int max_students) {
int i = 0;
while (i < max_students) {
printf("请输入学号(输入0结束): ");
scanf("%d", &students[i].student_id);
if (students[i].student_id == 0) {
break;
}
printf("请输入语文成绩: ");
scanf("%d", &students[i].chinese);
printf("请输入数学成绩: ");
scanf("%d", &students[i].math);
printf("请输入英语成绩: ");
scanf("%d", &students[i].english);
printf("请输入物理成绩: ");
scanf("%d", &students[i].physics);
printf("请输入化学成绩: ");
scanf("%d", &students[i].chemistry);
i++;
}
}
```
3. 编写一个函数`saveStudentInfoToFile`将每个学生的全部数据保存到磁盘上的二进制文件`StudentGrade.dat`中。
```c
void saveStudentInfoToFile(Student students[], int num_students) {
FILE *file = fopen("StudentGrade.dat", "wb");
if (file == NULL) {
printf("无法打开文件\n");
return;
}
fwrite(students, sizeof(Student), num_students, file);
fclose(file);
}
```
4. 主函数中调用`inputStudentInfo`和`saveStudentInfoToFile`函数,完整示例代码如下:
```c
#include <stdio.h>
typedef struct {
int student_id;
int chinese;
int math;
int english;
int physics;
int chemistry;
} Student;
void inputStudentInfo(Student students[], int max_students) {
int i = 0;
while (i < max_students) {
printf("请输入学号(输入0结束): ");
scanf("%d", &students[i].student_id);
if (students[i].student_id == 0) {
break;
}
printf("请输入语文成绩: ");
scanf("%d", &students[i].chinese);
printf("请输入数学成绩: ");
scanf("%d", &students[i].math);
printf("请输入英语成绩: ");
scanf("%d", &students[i].english);
printf("请输入物理成绩: ");
scanf("%d", &students[i].physics);
printf("请输入化学成绩: ");
scanf("%d", &students[i].chemistry);
i++;
}
}
void saveStudentInfoToFile(Student students[], int num_students) {
FILE *file = fopen("StudentGrade.dat", "wb");
if (file == NULL) {
printf("无法打开文件\n");
return;
}
fwrite(students, sizeof(Student), num_students, file);
fclose(file);
}
int main() {
int max_students = 100;
Student students[max_students];
inputStudentInfo(students, max_students);
saveStudentInfoToFile(students, max_students);
return 0;
}
```
运行该程序后,会在当前目录下生成名为`StudentGrade.dat`的二进制文件,其中包含输入的学生成绩信息。
阅读全文