使用结构体数组存放学生成绩信息,至少包含学号(整形),语文、数学、英语、物理、化学这五门课程的百分制成绩。编写程序实现: (1) 编写一个函数用来输入所有学生的信息(当输入的学号为0时,结束输入); (2)并将每个学生的全部数据保存到磁盘上的二进制文件StudentGrade.dat中。
时间: 2024-04-10 10:28:23 浏览: 49
结构体实现学生成绩管理系统(精编版).pdf
好的,下面是实现上述功能的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int studentId;
float chineseScore;
float mathScore;
englishScore;
float physics;
float chemistryScore;
};
void inputStudentInfo* students, int size) {
int i = 0;
while (i < size) {
printf("请输入学号(输入0结束输入): ");
scanf("%d", &students[i].studentId);
if (students[i].studentId == 0) {
break;
}
printf("请输入语文成绩: ");
scanf("%f", &students[i].chineseScore);
printf("请输入数学成绩: ");
scanf("%f", &students[i].mathScore);
printf("请输入英语成绩: ");
scanf("%f", &students[i].englishScore);
printf("请输入物理成绩: ");
scanf("%f", &students[i].physicsScore);
printf("请输入化学成绩: ");
scanf("%f", &students[i].chemistryScore);
i++;
}
}
void saveStudentInfo(Student* students, int size) {
FILE* file = fopen("StudentGrade.dat", "wb");
if (file == NULL) {
printf("文件打开失败\n");
return;
}
fwrite(students, sizeof(Student), size, file);
fclose(file);
}
int main() {
int size;
printf("请输入学生人数: ");
scanf("%d", &size);
Student* students = (Student*)malloc(size * sizeof(Student));
inputStudentInfo(students, size);
saveStudentInfo(students, size);
free(students);
return 0;
}
```
在上面的代码中,我们首先定义了一个名为 `Student` 的结构体,用于存储学生的成绩信息。然后编写了 `inputStudentInfo` 函数,用于输入所有学生的信息,当输入的学号为0时,结束输入。接着编写了 `saveStudentInfo` 函数,将每个学生的全部数据保存到磁盘上的二进制文件 `StudentGrade.dat` 中。最后在 `main` 函数中调用这两个函数完成程序的执行。
注意,这段代码是将学生信息保存到二进制文件中,如果需要从文件中读取学生信息并显示出来,可以编写一个读取函数,并在 `main` 函数中调用该函数进行读取。
阅读全文