文件“stu_info1.txt”包含学生的基本信息(姓名、学号、籍贯三项),现在需要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生完整信息(姓名、学号、籍贯、课程 1、课程 2、课程 3、平均分)写入文件“stu_info2.txt”并保存于磁盘上。 C语言
时间: 2023-08-19 20:04:48 浏览: 206
以下是C语言代码实现:
```c
#include <stdio.h>
int main() {
FILE *fp1, *fp2;
char name[20], id[20], hometown[20];
float score1, score2, score3, average;
fp1 = fopen("stu_info1.txt", "r"); // 以只读方式打开文件
fp2 = fopen("stu_info2.txt", "w"); // 以写入方式打开文件
// 读取文件中的学生信息并计算平均成绩
while (fscanf(fp1, "%s %s %s", name, id, hometown) != EOF) {
printf("请输入 %s 的三门课程成绩:", name);
scanf("%f %f %f", &score1, &score2, &score3);
average = (score1 + score2 + score3) / 3.0;
fprintf(fp2, "%s %s %s %.2f %.2f %.2f %.2f\n", name, id, hometown, score1, score2, score3, average);
}
fclose(fp1);
fclose(fp2);
return 0;
}
```
解释:
1. 首先通过 `fopen()` 函数分别以只读和写入方式打开文件。
2. 然后使用 `fscanf()` 函数从 `stu_info1.txt` 文件中读取每个学生的基本信息(姓名、学号、籍贯),并使用 `scanf()` 函数为每个学生输入三门课程成绩。接着计算平均成绩,并使用 `fprintf()` 函数将完整信息写入 `stu_info2.txt` 文件中。
3. 最后使用 `fclose()` 函数关闭文件流。
注意事项:
- 在读取字符串时,应该使用 `%s` 格式说明符,但需要注意字符串长度不要超过数组长度。
- 在使用 `scanf()` 函数读取浮点数时,应该使用 `%f` 格式说明符。
- 在使用 `fprintf()` 函数写入浮点数时,应该使用 `%.2f` 格式说明符,表示保留两位小数。
阅读全文