C语言文件“stu_info1.txt”包含学生的基本信息(姓名、学号、籍贯三项),现在需 要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生 完整信息(姓名、学号、籍贯、课程 1、课程 2、课程 3、平均分)写入文件 “stu_info2.txt”并保存于磁盘上。
时间: 2023-12-22 08:12:23 浏览: 90
关于学生成绩管理系统的C语言文件
好的,这是一个关于文件操作和数据处理的问题。我可以帮您解答。
首先,需要打开文件“stu_info1.txt”,读取学生的基本信息,然后逐一输入每位学生的三门课程成绩,计算平均成绩,再将学生完整信息写入文件“stu_info2.txt”。
以下是一个可能的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
struct student {
char name[20];
char id[10];
char hometown[20];
float score1;
float score2;
float score3;
float average;
};
int main() {
// 打开文件stu_info1.txt
FILE* fp1 = fopen("stu_info1.txt", "r");
if (fp1 == NULL) {
printf("Cannot open file stu_info1.txt\n");
return 1;
}
// 创建文件stu_info2.txt
FILE* fp2 = fopen("stu_info2.txt", "w");
if (fp2 == NULL) {
printf("Cannot create file stu_info2.txt\n");
return 1;
}
// 逐行读取学生信息,计算平均分并写入文件
struct student stu;
while (fscanf(fp1, "%s %s %s", stu.name, stu.id, stu.hometown) == 3) {
printf("Please input scores for student %s:\n", stu.name);
scanf("%f %f %f", &stu.score1, &stu.score2, &stu.score3);
stu.average = (stu.score1 + stu.score2 + stu.score3) / 3;
fprintf(fp2, "%s %s %s %.2f %.2f %.2f %.2f\n", stu.name, stu.id, stu.hometown,
stu.score1, stu.score2, stu.score3, stu.average);
}
// 关闭文件
fclose(fp1);
fclose(fp2);
printf("All done. Results are stored in file stu_info2.txt.\n");
return 0;
}
```
这段代码使用了结构体来存储每个学生的完整信息,使用了文件输入输出函数来读写文件,使用了格式化输入输出函数来读写数据。需要注意的是,这里假设文件中每行都包含三个字符串,分别为姓名、学号和籍贯,且每次读取的行数不超过数组大小(否则可能会出现缓冲区溢出的问题)。如果文件格式不符合要求,需要根据实际情况进行修改。
阅读全文