C语言已知数据文件stu.txt中存放了五个学生的信息、姓名、数学、英语、计算机成绩(要求通过写方式打开创建文件);读文件,计算每个学生成绩的平均值,最后将学生数据写入out.txt中去
时间: 2024-06-10 19:05:25 浏览: 31
三份c语言实现的简单系统代码.txt
好的,我了解了你的问题。以下是C语言代码实现:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct student {
char name[20];
float math;
float english;
float computer;
float average;
} student;
int main(void) {
FILE *fp;
student stu[5];
float math_sum = 0.0, english_sum = 0.0, computer_sum = 0.0;
int i;
// 打开stu.txt文件
if ((fp = fopen("stu.txt", "r")) == NULL) {
printf("Cannot open file stu.txt.\n");
exit(1);
}
// 读取数据并计算总分
for (i = 0; i < 5; i++) {
fscanf(fp, "%s%f%f%f", stu[i].name, &stu[i].math, &stu[i].english, &stu[i].computer);
math_sum += stu[i].math;
english_sum += stu[i].english;
computer_sum += stu[i].computer;
}
fclose(fp);
// 计算平均分并写入out.txt文件
if ((fp = fopen("out.txt", "w")) == NULL) {
printf("Cannot open file out.txt.\n");
exit(1);
}
for (i = 0; i < 5; i++) {
stu[i].average = (stu[i].math + stu[i].english + stu[i].computer) / 3.0;
fprintf(fp, "%s %.2f\n", stu[i].name, stu[i].average);
}
fprintf(fp, "Math average: %.2f\n", math_sum / 5.0);
fprintf(fp, "English average: %.2f\n", english_sum / 5.0);
fprintf(fp, "Computer average: %.2f\n", computer_sum / 5.0);
fclose(fp);
return 0;
}
```
这段代码打开stu.txt文件,读取数据并计算每个学生的平均成绩,最后将结果写入out.txt文件。请确认stu.txt和out.txt两个文件都存在并且可写。
希望我的回答能对你有所帮助。
阅读全文