用c语言实现将3个学生的4门成绩保存至文件score.txt中,然后把每个学生不及格的成绩保存在文件nopass.txt中,
时间: 2024-10-19 14:17:26 浏览: 33
基于C语言实现学生成绩管理系统
在C语言中,你可以使用`stdio.h`库来实现这个功能。首先,创建一个结构体`Student`来存储学生的姓名和四门课程的成绩。然后,你需要打开两个文件,一个是用于保存所有成绩,另一个是用于只记录不及格的成绩。
下面是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
struct Student {
char name[50];
int scores[4]; // 一门课程一个整数
};
void save_scores_to_file(struct Student students[], int count, char filename[]) {
FILE* file = fopen(filename, "w");
if (file == NULL) {
printf("Failed to open the file.\n");
return;
}
for (int i = 0; i < count; i++) {
fprintf(file, "%s:\t", students[i].name);
for (int j = 0; j < 4; j++) {
fprintf(file, "%d ", students[i].scores[j]);
}
fprintf(file, "\n");
}
fclose(file);
printf("Scores saved to %s.\n", filename);
}
void save_nopass_to_file(struct Student students[], int count, char filename[]) {
FILE* file = fopen(filename, "a");
if (file == NULL) {
printf("Failed to open the file.\n");
return;
}
for (int i = 0; i < count; i++) {
bool has_nopass = false;
for (int j = 0; j < 4; j++) {
if (students[i].scores[j] <= 60) { // 这里假设不及格分数为60分及以下
fprintf(file, "%s failed in %s (%d)\n", students[i].name, subject_names[j], students[i].scores[j]);
has_nopass = true;
}
}
if (!has_nopass) {
fprintf(file, "%s passed all subjects.\n", students[i].name);
}
}
fclose(file);
printf("Non-passing scores saved to %s.\n", filename);
}
int main() {
// 假设有3个学生数据
struct Student students[3] = {
{"Tom", {85, 90, 70, 95}},
{"Jerry", {65, 75, 55, 80}},
{"Spike", {90, 85, 75, 100}}
};
const char* score_file = "score.txt";
const char* nopass_file = "nopass.txt";
save_scores_to_file(students, sizeof(students)/sizeof(students[0]), score_file);
save_nopass_to_file(students, sizeof(students)/sizeof(students[0]), nopass_file);
return 0;
}
```
在这个例子中,我们首先定义了`save_scores_to_file`函数负责写入所有成绩,然后定义`save_nopass_to_file`函数检查并记录不及格成绩。这两个函数都接收学生数组、学生数量以及文件名作为参数。`main`函数中展示了如何使用这两个函数,并假设了`subject_names`数组用于存储科目名称。
阅读全文