编写C语言程序,文件“stu_info1.txt”包含学生的基本信息(姓名,学号,籍贯三项),现在需要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生完整信息(姓名,学号,籍贯,课程1,课程2,课程3,平均分)写入文件“stu_info2.txt”并保存于磁盘上
时间: 2023-06-14 19:06:17 浏览: 168
以下是实现该功能的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 50 // 最大字符串长度
typedef struct {
char name[MAX_LEN];
char id[MAX_LEN];
char hometown[MAX_LEN];
float grade1;
float grade2;
float grade3;
float avg_grade;
} Student;
int main() {
FILE *fp1, *fp2;
char filename1[] = "stu_info1.txt";
char filename2[] = "stu_info2.txt";
char line[MAX_LEN];
Student stu;
// 打开文件
fp1 = fopen(filename1, "r");
if (fp1 == NULL) {
printf("无法打开文件 %s\n", filename1);
exit(1);
}
fp2 = fopen(filename2, "w");
if (fp2 == NULL) {
printf("无法打开文件 %s\n", filename2);
exit(1);
}
// 读取基本信息并输入成绩
while (fgets(line, MAX_LEN, fp1) != NULL) {
sscanf(line, "%s %s %s", stu.name, stu.id, stu.hometown);
printf("请输入 %s 的三门课程成绩:", stu.name);
scanf("%f %f %f", &stu.grade1, &stu.grade2, &stu.grade3);
stu.avg_grade = (stu.grade1 + stu.grade2 + stu.grade3) / 3;
// 写入文件
fprintf(fp2, "%s %s %s %.2f %.2f %.2f %.2f\n", stu.name, stu.id, stu.hometown, stu.grade1, stu.grade2, stu.grade3, stu.avg_grade);
}
// 关闭文件
fclose(fp1);
fclose(fp2);
return 0;
}
```
该程序首先打开了文件“stu_info1.txt”和“stu_info2.txt”,然后逐行读取文件“stu_info1.txt”中的学生基本信息。每读取一行,程序就会将该行字符串解析成学生的姓名、学号和籍贯,并提示用户输入该学生的三门课程成绩。接着,程序会计算该学生的平均成绩,并将学生的完整信息(包括姓名、学号、籍贯、三门课程成绩和平均成绩)写入文件“stu_info2.txt”。最后,程序关闭文件并退出。
阅读全文