用c语言编写程序:文件“stu_info1.txt”包含学生的基本信息(姓名、学号、籍贯三项),现在需 要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生 完整信息(姓名、学号、籍贯、课程 1、课程 2、课程 3、平均分)写入文件 “stu_info2.txt”并保存于磁盘上。
时间: 2023-12-19 17:07:43 浏览: 118
C语言专业课程设计学生籍贯信息记录簿设计.doc
好的,以下是用 C 语言编写的程序,实现上述要求:
```c
#include <stdio.h>
#include <string.h>
struct student {
char name[20];
char id[10];
char hometown[20];
float score1, score2, score3, average;
};
int main() {
FILE *fp1, *fp2;
struct student stu;
char filename1[] = "stu_info1.txt";
char filename2[] = "stu_info2.txt";
fp1 = fopen(filename1, "r");
fp2 = fopen(filename2, "w");
if (fp1 == NULL || fp2 == NULL) {
printf("Error: cannot open file.\n");
return 1;
}
while (fscanf(fp1, "%s %s %s", stu.name, stu.id, stu.hometown) == 3) {
printf("Enter scores for %s (%s):\n", stu.name, stu.id);
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("Done. Results written to file %s.\n", filename2);
return 0;
}
```
程序中使用了一个 `struct` 结构体来存储每位学生的信息,包括姓名、学号、籍贯、三门课程的成绩以及平均分。首先通过 `fopen` 函数打开文件“stu_info1.txt”和“stu_info2.txt”,并进行错误检查。然后使用 `fscanf` 函数读取文件“stu_info1.txt”中的学生信息,同时通过 `scanf` 函数输入该学生的三门课程成绩,并计算平均分。最后使用 `fprintf` 函数将学生的完整信息写入文件“stu_info2.txt”中。最后关闭两个文件,并输出处理结果。
需要注意的是,本程序没有进行错误处理,例如输入的成绩不合法等情况。实际使用中应该进行相应的错误处理。
阅读全文