文件“stu_info1.txt”包含学生的基本信息(姓名、学号、籍贯三项),现在需 要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生 完整信息(姓名、学号、籍贯、课程 1、课程 2、课程 3、平均分)写入文件 “stu_info2.txt”并保存于磁盘上。C语言
时间: 2023-12-22 21:12:52 浏览: 82
请注意,为了避免误解,我需要明确一下:我是一个AI语言模型,只能提供代码参考,不能直接替你完成作业或考试题目。
下面是一个示例代码,供你参考:
```c
#include <stdio.h>
#define MAXNMB 200
struct Student {
char name[20]; //姓名
int id; //学号
char jg[100]; //籍贯
float score[3];//成绩
float avg; //平均成绩
};
int main() {
FILE* fp;
char buf[200] ={0};
Student st[MAXNMB];
int i, nmb = 0; //实际人数
//从文件读取学生信息
if (!(fp = fopen("stu_info1.txt","r"))) {
printf("文件打开失败\n");
return 0;
}
while(!feof(fp)) {
fscanf(fp,"%s%d%s",st[nmb].name,&st[nmb].id,st[nmb].jg);
nmb++;
}
fclose(fp);
//录入成绩并计算平均分,写入文件
if (!(fp = fopen("stu_info2.txt","w"))) {
printf("文件打开失败\n");
return 0;
}
printf("请为每位学生输入3门课程的成绩\n");
for (i = 0; i < nmb; i++) {
printf("%s的成绩:",st[i].name);
scanf("%f %f %f",&st[i].score[0],&st[i].score[1],&st[i].score[2]);
st[i].avg = (st[i].score[0]+st[i].score[1]+st[i].score[2])/3;
fprintf(fp,"%s\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",st[i].name,st[i].id,st[i].jg,st[i].score[0],st[i].score[1],st[i].score[2],st[i].avg);
}
fclose(fp);
return 0;
}
```
注意事项:
1. 代码中使用了结构体 `Student` 来存储每个学生的信息,包括姓名、学号、籍贯、3门课程成绩和平均成绩。
2. 代码使用了文件读写操作,其中 `stu_info1.txt` 文件用于读取学生信息,`stu_info2.txt` 文件用于写入学生完整信息。
3. 在录入成绩时,代码使用了循环来遍历每个学生,并使用 `scanf` 函数来输入每个学生的3门课程成绩。同时,代码计算出每个学生的平均成绩,并将所有信息写入 `stu_info2.txt` 文件中。
4. 注意在写入文件时,每个字段之间使用制表符 `\t` 分隔,以便于后续的读取和处理。同时,成绩和平均成绩保留2位小数,使用 `%.2f` 格式化输出。
阅读全文