文件“stu_infol.txt”包含学生的基本信息(姓名、学号、籍贯三项),现在需要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生完整信息(姓名、学号、贯、课程 1、课程 2、课程 3、平均分) 写入文件“stu info2.txt”并保存于磁盘上。c语言
时间: 2023-12-22 08:12:49 浏览: 79
C语言输入学生成绩,计算并输出这些学生的最低分、最高分、平均分。
好的,以下是一个示例的 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
// 定义一个学生结构体
struct Student {
char name[20];
char id[10];
char hometown[20];
float scores[3];
float average_score;
};
int main() {
// 读取学生信息
struct Student students[MAX_STUDENTS];
int n = 0;
FILE *fp = fopen("stu_infol.txt", "r");
if (fp == NULL) {
printf("无法打开文件 stu_infol.txt\n");
return 1;
}
while (fscanf(fp, "%s %s %s", students[n].name, students[n].id, students[n].hometown) == 3) {
n++;
}
fclose(fp);
// 输入学生成绩
for (int i = 0; i < n; i++) {
printf("请输入%s的三门课程成绩:\n", students[i].name);
for (int j = 0; j < 3; j++) {
printf("请输入第%d门课程的成绩:", j + 1);
scanf("%f", &students[i].scores[j]);
}
students[i].average_score = (students[i].scores[0] + students[i].scores[1] + students[i].scores[2]) / 3;
}
// 将学生信息写入文件
fp = fopen("stu_info2.txt", "w");
if (fp == NULL) {
printf("无法打开文件 stu_info2.txt\n");
return 1;
}
for (int i = 0; i < n; i++) {
fprintf(fp, "%s\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n",
students[i].name, students[i].id, students[i].hometown,
students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].average_score);
}
fclose(fp);
printf("学生信息已写入文件 stu_info2.txt\n");
return 0;
}
```
以上代码中,我们首先定义了一个 `Student` 结构体,用于表示每个学生的信息和成绩。然后,我们通过文件读写功能,读取了文件 `stu_infol.txt` 中的学生信息,并创建了一个包含所有学生的数组 `students`。接着,我们遍历 `students` 数组,为每个学生输入三门课程的成绩,并计算平均成绩。最后,我们将学生的完整信息写入文件 `stu_info2.txt` 中。
希望这个回答能够帮到你!如果你有任何其他问题,请继续提问。
阅读全文