C语言文件“stu_info1.txt”包含学生的基本信息(姓名、学号、籍贯三项),现在需 要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生 完整信息(姓名、学号、籍贯
时间: 2024-05-16 12:14:25 浏览: 119
三项,以及三门课程成绩和平均成绩)写入新的文件“stu_info2.txt”中。可以使用以下C语言代码实现该功能:
```c
#include <stdio.h>
typedef struct {
char name[20];
char id[10];
char hometown[20];
float grade1;
float grade2;
float grade3;
float avg_grade;
} Student;
int main() {
// 打开文件
FILE *fp1, *fp2;
fp1 = fopen("stu_info1.txt", "r");
fp2 = fopen("stu_info2.txt", "w");
// 读取学生信息并计算平均成绩
Student stu;
while (fscanf(fp1, "%s %s %s", stu.name, stu.id, stu.hometown) != EOF) {
printf("请输入 %s 的三门成绩:", stu.name);
scanf("%f %f %f", &stu.grade1, &stu.grade2, &stu.grade3);
stu.avg_grade = (stu.grade1 + stu.grade2 + stu.grade3) / 3.0;
// 写入文件
fprintf(fp2, "%s %s %s %.2f %.2f %.2f %.2f\n", stu.name, stu.id, stu.hometown, stu.grade1, stu.grade2, stu.grade3, stu.avg_grade);
}
// 关闭文件
fclose(fp1);
fclose(fp2);
return 0;
}
```
在该代码中,我们首先定义了一个 `Student` 结构体,包含了学生的基本信息和三门课程成绩及平均成绩。然后我们打开了两个文件,一个用于读取学生信息,一个用于写入学生信息和成绩。接着我们使用 `fscanf` 函数从文件中读取每个学生的基本信息,并使用 `scanf` 函数为该学生输入三门课程成绩,计算平均成绩。最后我们使用 `fprintf` 函数将该学生的完整信息写入新文件中。循环读取每个学生直到文件末尾,然后关闭文件。
阅读全文