用C语言编写程序,从键盘输入以下5个学生的学号、姓名,以及数学、语文和英语成绩,写到文本文件f2.txt中,再从文件中取出数据,计算每个学生的总成绩和平均分,并将结果显示在屏幕上。 提示:在文件读写的...
时间: 2024-01-02 11:01:42 浏览: 97
好的,这是一个关于C语言文件读写的问题。我可以给出一个大致的思路来解决这个问题:
1. 首先,你需要定义一个结构体来存储学生信息,包括学号、姓名和三门课的成绩。例如:
```c
struct student {
int id;
char name[20];
float math;
float chinese;
float english;
float total; // 总成绩
float average; // 平均分
};
```
2. 然后,你需要使用标准输入输出库函数,从键盘输入这五个学生的信息,将它们存储到结构体数组中。
```c
struct student stu[5];
for (int i = 0; i < 5; i++) {
printf("请输入学生[%d]的学号、姓名、数学成绩、语文成绩和英语成绩:", i+1);
scanf("%d %s %f %f %f", &stu[i].id, stu[i].name, &stu[i].math, &stu[i].chinese, &stu[i].english);
}
```
3. 接下来,你需要使用标准文件库函数,将这些学生信息写入到文本文件f2.txt中。具体方法是:打开文件,将结构体数组中的数据写入文件,然后关闭文件。
```c
FILE *fp; // 定义文件指针
fp = fopen("f2.txt", "w"); // 打开文件
for (int i = 0; i < 5; i++) {
fprintf(fp, "%d %s %.1f %.1f %.1f\n", stu[i].id, stu[i].name, stu[i].math, stu[i].chinese, stu[i].english);
}
fclose(fp); // 关闭文件
```
4. 读取文件中的数据,计算每个学生的总成绩和平均分。具体方法是:打开文件,读取文件中的数据到结构体数组中,计算每个学生的总成绩和平均分,然后关闭文件。
```c
fp = fopen("f2.txt", "r"); // 打开文件
for (int i = 0; i < 5; i++) {
fscanf(fp, "%d %s %f %f %f\n", &stu[i].id, stu[i].name, &stu[i].math, &stu[i].chinese, &stu[i].english);
stu[i].total = stu[i].math + stu[i].chinese + stu[i].english;
stu[i].average = stu[i].total / 3.0;
}
fclose(fp); // 关闭文件
```
5. 最后,你需要使用标准输出库函数,将每个学生的总成绩和平均分显示在屏幕上。
```c
for (int i = 0; i < 5; i++) {
printf("学生[%d]:%d %s 数学:%.1f 语文:%.1f 英语:%.1f 总成绩:%.1f 平均分:%.1f\n", i+1, stu[i].id, stu[i].name, stu[i].math, stu[i].chinese, stu[i].english, stu[i].total, stu[i].average);
}
```
这样就完成了从键盘输入学生信息,将信息写入文件,读取文件中的数据并计算每个学生的总成绩和平均分,最后将结果显示在屏幕上的操作。
阅读全文