c语言文件“stu_info1.txt”包含学生的基本信息(姓名、学号、籍贯三项),现在需 要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生 完整信息(姓名、学号、籍贯、课程 1、课程 2、课程 3、平均分)写入文件 “stu_info2.txt”并保存于磁盘上。
时间: 2023-08-19 17:04:48 浏览: 150
下面是一个基本的实现方法:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 50
// 学生信息结构体
typedef struct {
char name[MAX_LEN]; // 姓名
char id[MAX_LEN]; // 学号
char hometown[MAX_LEN];// 籍贯
float score1, score2, score3; // 三门课程成绩
float average; // 平均分
} Student;
int main() {
// 打开 stu_info1.txt 文件
FILE *fp_in = fopen("stu_info1.txt", "r");
if (fp_in == NULL) {
printf("Error: could not open file.\n");
return 1;
}
// 打开 stu_info2.txt 文件
FILE *fp_out = fopen("stu_info2.txt", "w");
if (fp_out == NULL) {
printf("Error: could not open file.\n");
return 1;
}
// 读取每个学生的信息
Student student;
while (fscanf(fp_in, "%s %s %s", student.name, student.id, student.hometown) != EOF) {
// 输入成绩
printf("Enter the scores of %s (%s):\n", student.name, student.id);
scanf("%f %f %f", &student.score1, &student.score2, &student.score3);
student.average = (student.score1 + student.score2 + student.score3) / 3.0;
// 将学生信息写入 stu_info2.txt 文件中
fprintf(fp_out, "%s %s %s %.2f %.2f %.2f %.2f\n", student.name, student.id, student.hometown,
student.score1, student.score2, student.score3, student.average);
}
// 关闭文件
fclose(fp_in);
fclose(fp_out);
printf("Done.\n");
return 0;
}
```
该程序首先打开 `stu_info1.txt` 文件,读取每个学生的姓名、学号和籍贯信息,并依次输入三门课程的成绩,计算平均分。然后将学生的完整信息写入 `stu_info2.txt` 文件中,并保存于磁盘上。每个学生的信息在输出时按照一定的格式进行排版,方便查看。
阅读全文