C语言已知数据文件stu.txt中存放了五个学生的信息、姓名、数学、英语、计算机成绩(要求通过写方式打开创建文件);读文件,计算每个学生成绩的平均值,最后将学生数据写入out.txt中去
时间: 2024-06-10 21:05:28 浏览: 117
三份c语言实现的简单系统代码.txt
非常感谢您的提问。
以下是本AI的回答:
为了实现您的需求,您可以按照以下步骤进行操作:
1. 使用C语言编写代码,以写方式打开创建一个名为“stu.txt”的文件,并向其中写入五个学生的信息,包括姓名、数学、英语、计算机成绩。
2. 使用C语言编写代码,以读方式打开“stu.txt”文件,并读取每个学生的成绩信息。
3. 计算每个学生的成绩平均值。
4. 将每个学生的信息、姓名、数学、英语、计算机成绩和成绩平均值,写入一个名为“out.txt”的文件中。
下面是一个示例代码:
```
#include <stdio.h>
struct Student {
char name[20];
float math;
float english;
float computer;
float avg;
};
int main() {
FILE *fp1, *fp2;
struct Student stu[5];
int i;
// 打开并写入stu.txt
if ((fp1 = fopen("stu.txt", "w")) == NULL) {
printf("Cannot open file.\n");
return 0;
}
for (i = 0; i < 5; i++) {
printf("请输入第%d个学生的姓名、数学、英语和计算机成绩:", i+1);
scanf("%s%f%f%f", stu[i].name, &stu[i].math, &stu[i].english, &stu[i].computer);
fprintf(fp1, "%s %.2f %.2f %.2f\n", stu[i].name, stu[i].math, stu[i].english, stu[i].computer);
}
// 关闭stu.txt
fclose(fp1);
// 打开并读取stu.txt
if ((fp1 = fopen("stu.txt", "r")) == NULL) {
printf("Cannot open file.\n");
return 0;
}
// 打开并写入out.txt
if ((fp2 = fopen("out.txt", "w")) == NULL) {
printf("Cannot open file.\n");
return 0;
}
for (i = 0; i < 5; i++) {
fscanf(fp1, "%s%f%f%f", stu[i].name, &stu[i].math, &stu[i].english, &stu[i].computer);
stu[i].avg = (stu[i].math + stu[i].english + stu[i].computer) / 3;
fprintf(fp2, "%s %.2f %.2f %.2f %.2f\n", stu[i].name, stu[i].math, stu[i].english, stu[i].computer, stu[i].avg);
}
// 关闭stu.txt和out.txt
fclose(fp1);
fclose(fp2);
printf("学生信息处理完毕,结果已经保存到out.txt中。\n");
return 0;
}
```
在代码中,我们首先定义了一个结构体“Student”,其中包含了学生的姓名、数学、英语、计算机成绩和成绩平均值。
然后,我们使用“fp1 = fopen("stu.txt", "w")”语句创建了一个名为“stu.txt”的文件,并向其中写入了五个学生的信息。接着,我们使用“fp1 = fopen("stu.txt", "r")”语句打开该文件,并将每个学生的成绩信息读取出来。
下一步,我们计算了每个学生的成绩平均值,并将学生信息、姓名、数学、英语、计算机成绩和成绩平均值,写入一个名为“out.txt”的文件中。
最后,在代码执行完毕后,我们输出了一条提示信息。
希望这个回答能对您有所帮助。如果您还有其他问题,请随时提出,我会尽力帮您解答。
阅读全文