使用结构体数组存放学生成绩信息,至少包含学号(整形),语文、数学、英语、物理、化学这五门课程的百分制成绩。编写程序实现: (1) 编写一个函数用来输入所有学生的信息(当输入的学号为0时,结束输入); (2)并将每个学生的全部数据保存到磁盘上的二进制文件StudentGrade.dat中。
时间: 2024-04-10 11:28:21 浏览: 44
结构体实现学生成绩管理系统(精编版).pdf
好的,以下是实现上述功能的C代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 100
typedef struct {
int studentID;
int chinese;
int math;
int english;
int physics;
int chemistry;
} Student;
void inputStudentInfo(Student students[], int *numStudents) {
int i = 0;
printf("请输入学生的信息:\n");
while (1) {
printf("学号(输入0结束输入):");
scanf("%d", &students[i].studentID);
if (students[i].studentID == 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++;
}
*numStudents = i;
}
void saveToFile(Student students[], int numStudents) {
FILE *file = fopen("StudentGrade.dat", "wb");
if (file == NULL) {
printf("无法打开文件!\n");
return;
}
fwrite(students, sizeof(Student), numStudents, file);
fclose(file);
}
int main() {
Student students[MAX_STUDENTS];
int numStudents = 0;
inputStudentInfo(students, &numStudents);
saveToFile(students, numStudents);
printf("学生信息已保存到文件StudentGrade.dat中。\n");
return 0;
}
```
以上代码定义了一个结构体 `Student` 来存放学生成绩信息,包括学号和五门课程的成绩。`inputStudentInfo` 函数用来输入学生信息,通过循环输入直到学号为0时结束。`saveToFile` 函数将学生信息保存到二进制文件 "StudentGrade.dat" 中。在 `main` 函数中,首先定义了一个 `students` 数组来存放学生信息,然后调用 `inputStudentInfo` 函数输入学生信息,最后调用 `saveToFile` 函数将学生信息保存到文件中。
阅读全文