文件“stu_info1.txt”包含学生的基本信息(姓名、学号、籍贯三项),现在需 要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生 完整信息(姓名、学号、籍贯、课程 1、课程 2、课程 3、平均分)写入文件 “stu_info2.txt”并保存于磁盘上。请用C语言完成。
时间: 2023-12-23 13:05:53 浏览: 222
好的,这是一个文件读写的问题,可以使用C语言的文件操作函数来实现。
以下是一个可能的解法:
```c
#include <stdio.h>
typedef struct {
char name[20];
char id[20];
char hometown[20];
double score1, score2, score3, average;
} Student;
int main() {
FILE *fp1, *fp2;
fp1 = fopen("stu_info1.txt", "r");
fp2 = fopen("stu_info2.txt", "w");
if (fp1 == NULL || fp2 == NULL) {
printf("Failed to open file!\n");
return 1;
}
Student stu;
while (fscanf(fp1, "%s %s %s", stu.name, stu.id, stu.hometown) != EOF) {
printf("Enter scores for %s:\n", stu.name);
scanf("%lf %lf %lf", &stu.score1, &stu.score2, &stu.score3);
stu.average = (stu.score1 + stu.score2 + stu.score3) / 3.0;
fprintf(fp2, "%s %s %s %.1f %.1f %.1f %.1f\n", stu.name, stu.id, stu.hometown, stu.score1, stu.score2, stu.score3, stu.average);
}
fclose(fp1);
fclose(fp2);
return 0;
}
```
解释一下代码:
首先定义了一个 `Student` 结构体来保存每个学生信息,包括姓名、学号、籍贯、三门课程成绩和平均分。
然后打开了两个文件,一个是读取学生基本信息的 `stu_info1.txt`,一个是写入完整信息的 `stu_info2.txt`。
在读取文件时,使用了 `fscanf` 函数来逐行读取每个学生的信息,并提示用户输入该学生三门课程的成绩。输入完毕后,计算平均分,再使用 `fprintf` 函数将完整信息写入到 `stu_info2.txt` 文件中。
最后记得关闭文件,释放资源。
希望能解决你的问题!
阅读全文