编写一个C语言程序:文件“stu_info1.txt”包含学生的基本信息(姓名、学号、籍贯三项),现在需 要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生 完整信息(姓名、学号、籍贯、课程 1、课程 2、课程 3、平均分)写入文件 “stu_info2.txt”并保存于磁盘上。
时间: 2023-12-18 13:03:25 浏览: 106
好的,以下是满足你要求的C语言程序:
```c
#include <stdio.h>
struct Student {
char name[20];
char id[10];
char hometown[20];
float score1;
float score2;
float score3;
float average;
};
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.");
return 1;
}
struct Student s;
while (fscanf(fp1, "%s %s %s", s.name, s.id, s.hometown) == 3) {
printf("Enter scores for %s (ID: %s):\n", s.name, s.id);
scanf("%f %f %f", &s.score1, &s.score2, &s.score3);
s.average = (s.score1 + s.score2 + s.score3) / 3;
fprintf(fp2, "%s %s %s %.2f %.2f %.2f %.2f\n", s.name, s.id, s.hometown, s.score1, s.score2, s.score3, s.average);
}
fclose(fp1);
fclose(fp2);
return 0;
}
```
该程序首先打开文件“stu_info1.txt”和“stu_info2.txt”,然后从“stu_info1.txt”中逐行读取学生的基本信息(姓名、学号、籍贯),并使用scanf()函数从用户输入读取该学生的三门课程成绩,计算平均分,并将完整信息(姓名、学号、籍贯、课程1、课程2、课程3、平均分)写入“stu_info2.txt”中,最终关闭文件并退出。
阅读全文