C语言文件“stu_infol.txt”包含学生的基本信息(姓名、学号、籍贯三项),现在需要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生完整信息(姓名、学号、籍贯、课程 1、课程 2、课程 3、平均分) 写入文件“stu_info2.txt”并保存于磁盘上。
时间: 2023-11-27 07:52:35 浏览: 72
以下是基于C语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct{
char name[20]; // 姓名
int id; // 学号
char hometown[20]; // 籍贯
float score[3]; // 三门课程成绩
float avg_score; // 平均成绩
} Student;
int main() {
FILE *fp_in, *fp_out;
char filename_in[] = "stu_info.txt"; // 输入文件名
char filename_out[] = "stu_info2.txt"; // 输出文件名
fp_in = fopen(filename_in, "r");
fp_out = fopen(filename_out, "w");
if (fp_in == NULL || fp_out == NULL) {
printf("Failed to open file.\n");
exit(1);
}
Student stu;
while(fscanf(fp_in, "%s %d %s", stu.name, &stu.id, stu.hometown) != EOF){
// 读入学生基本信息
printf("Enter the scores of %s, ID %d:\n", stu.name, stu.id);
float sum_score = 0;
for(int i=0; i<3; i++){
printf("Course %d: ", i+1);
scanf("%f", &stu.score[i]);
sum_score += stu.score[i];
}
stu.avg_score = sum_score / 3;
// 输出到文件中
fprintf(fp_out, "%s %d %s %.2f %.2f %.2f %.2f\n", stu.name, stu.id, stu.hometown, stu.score[0], stu.score[1], stu.score[2], stu.avg_score);
}
fclose(fp_in);
fclose(fp_out);
return 0;
}
```
该程序首先打开输入文件和输出文件,然后通过循环读取每个学生的基本信息,依次输入三门课程成绩并计算平均成绩,最后将学生完整信息写入输出文件。需要注意的是,对于每个学生,输入的三门课程成绩都要累加到sum_score中,以便计算平均分。同时,输出到文件中的平均分保留两位小数,可以使用%.2f格式控制符实现。
阅读全文