某班有40名学生,期末考试科目有数学、英语、C语言和计算机原理四门课程。试编一个程序,将这40名学生的学号(长整型)、姓名(长度为15字节的字符串)及各科考试成绩(均为整型)存入二进制文件student中
时间: 2024-12-20 16:32:01 浏览: 7
要编写这样一个程序,首先我们需要定义一个结构体来存储每个学生的数据,包括学号、姓名和四个科目的成绩。然后我们将这些信息写入到二进制文件中。以下是一个简单的C语言示例:
```c
#include <stdio.h>
#include <string.h>
// 定义一个结构体来存储学生数据
typedef struct {
long long int student_id; // 学号
char name[16]; // 姓名 (包含终止符)
int math_score;
int english_score;
int c_language_score;
int computer_principle_score;
} Student;
int main() {
const int num_students = 40;
Student students[num_students];
// 假设我们已经有了所有学生的具体信息
// 这里只提供填充示例,实际应用中应从输入或数据库获取
for (int i = 0; i < num_students; i++) {
students[i].student_id = i + 1; // 假设学号从1开始
strcpy(students[i].name, "Student" + i); // 假设名字为 "Student1", "Student2", ...
students[i].math_score = i * 10 + 50; // 按照随机规则生成成绩
students[i].english_score = i * 15 + 70;
students[i].c_language_score = i * 20 + 90;
students[i].computer_principle_score = i * 25 + 110;
}
// 打开二进制文件
FILE* file = fopen("student", "wb");
if (!file) {
printf("Error opening the file.\n");
return 1;
}
// 写入学生数据
for (int i = 0; i < num_students; i++) {
// 将结构体转换为二进制并写入文件
fwrite(&students[i], sizeof(Student), 1, file);
}
// 关闭文件
fclose(file);
printf("Data has been written to 'student' file.\n");
return 0;
}
```
在这个例子中,我们使用了`fwrite()`函数将结构体`Student`的内容逐个写入到名为`student`的二进制文件中。
阅读全文