文件“stu infol.txt”包含学生的基本信息 (姓名、学号、籍贯三项),现在需要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生完整信息(姓名、学号、籍贯、课程 1、课程 2、课程 3、平均分)写入文件 “stuinfo2.txt”并保存于磁盘上.用c语音写出代码
时间: 2023-12-19 14:07:18 浏览: 122
好的,这是使用 C 语言编写实现该功能的代码:
```c
#include <stdio.h>
int main() {
FILE *fp1, *fp2;
char line[100];
fp1 = fopen("stu infol.txt", "r");
fp2 = fopen("stuinfo2.txt", "w");
if (fp1 == NULL || fp2 == NULL) {
printf("文件打开失败!\n");
return 0;
}
while (fgets(line, sizeof(line), fp1) != NULL) {
char name[20], stuid[20], hometown[20];
int score1, score2, score3;
float avg_score;
sscanf(line, "%s %s %s", name, stuid, hometown);
printf("请输入 %s 的三门成绩:\n", name);
scanf("%d %d %d", &score1, &score2, &score3);
avg_score = (score1 + score2 + score3) / 3.0;
fprintf(fp2, "%s %s %s %d %d %d %.2f\n", name, stuid, hometown, score1, score2, score3, avg_score);
}
fclose(fp1);
fclose(fp2);
return 0;
}
```
代码中使用了两个文件指针,一个用来读取“stu infol.txt”文件中的学生信息,另一个用来将学生信息和成绩写入“stuinfo2.txt”文件中。通过循环遍历每个学生,使用“sscanf()”函数从每一行中解析出学生的姓名、学号、籍贯,使用“printf()”函数提示用户输入该学生的三门成绩,使用“scanf()”函数读取用户输入的成绩,然后计算平均成绩,最后使用“fprintf()”函数将学生的完整信息写入文件中。
请注意,该代码中没有对文件路径进行任何检查,请确保“stu infol.txt”文件和该 C 语言文件在同一个目录下,否则需要指定正确的文件路径。
阅读全文