从键盘输入5个学生的学号、姓名,以及数学、语文和英语成绩,将这些数据写到文本文件f3.txt中,然后从文件中读取数据,计算每个学生的总成绩和平均分,并将结果显示在屏幕上。 用c语言
时间: 2024-12-22 12:19:23 浏览: 14
在C语言中,你可以使用`stdio.h`库进行标准输入输出操作,以及`fstream`库来处理文件I/O。以下是完成这个任务的一个示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体存储学生信息
typedef struct {
int id;
char name[50];
float math_score, chines_score, english_score;
} Student;
void input_students(Student students[], int num) {
for (int i = 0; i < num; i++) {
printf("请输入第%d位学生的学号、姓名及三科成绩:\n", i+1);
scanf("%d%s%f%f%f", &students[i].id, students[i].name, &students[i].math_score, &students[i].chines_score, &students[i].english_score);
}
}
void output_results(Student students[], int num) {
for (int i = 0; i < num; i++) {
float total_score = students[i].math_score + students[i].chines_score + students[i].english_score;
float average_score = total_score / 3.0;
printf("学生 %s 的学号:%d,总成绩:%.2f,平均分:%.2f\n", students[i].name, students[i].id, total_score, average_score);
}
}
int main() {
const int num_students = 5;
Student students[num_students];
// 写入数据到文件
FILE* file = fopen("f3.txt", "w");
if (file != NULL) {
for (int i = 0; i < num_students; i++) {
fprintf(file, "学号: %d, 姓名: %s, 数学: %.2f, 语文: %.2f, 英语: %.2f\n",
students[i].id, students[i].name, students[i].math_score, students[i].chines_score, students[i].english_score);
}
fclose(file);
printf("学生数据已写入文件 f3.txt.\n");
} else {
printf("无法打开文件!\n");
}
// 读取并显示结果
if (freopen("f3.txt", "r", stdin)) { // 重定向输入流
input_students(students, num_students);
output_results(students, num_students);
freopen(stdin, "r", stdin); // 恢复默认输入流
} else {
printf("无法读取文件!\n");
}
return 0;
}
```
阅读全文