用c语言编写程序从键盘输入以下5个学生的学号、姓名,以及数学、语文和英语成绩,写到文本文件d.txt中;再从文件中取出数据,计算每个学生的总成绩和平均分,并将结果显示在屏幕上。 学号 姓名 数学 语文 英语 总成绩 平均分 30508001 令狐冲 81 75 82 238 79 30508002 林平之 87 68 85 240 80 30508003 岳灵珊 73 84 80 237 79 30508004 郑盈盈 76 81 74 231 77 30508005 田伯光 83 75 71 229 76 提示:程序运行后,打开文本文件d.txt,检查写入文件中的数据是否正确。
时间: 2024-02-10 18:10:27 浏览: 90
好的,以下是用C语言编写的程序,可以实现您的需求:
```c
#include <stdio.h>
struct student {
int id;
char name[20];
int math;
int chinese;
int english;
int total;
float average;
};
int main() {
struct student s[5];
FILE *fp;
// 从键盘输入学生信息
for (int i = 0; i < 5; i++) {
printf("请输入第%d个学生的学号、姓名、数学成绩、语文成绩和英语成绩,用空格分隔:", i+1);
scanf("%d %s %d %d %d", &s[i].id, s[i].name, &s[i].math, &s[i].chinese, &s[i].english);
s[i].total = s[i].math + s[i].chinese + s[i].english;
s[i].average = s[i].total / 3.0;
}
// 将学生信息写入文件
fp = fopen("d.txt", "w");
fprintf(fp, "学号\t姓名\t数学成绩\t语文成绩\t英语成绩\t总成绩\t平均分\n");
for (int i = 0; i < 5; i++) {
fprintf(fp, "%d\t%s\t%d\t%d\t%d\t%d\t%.2f\n", s[i].id, s[i].name, s[i].math, s[i].chinese, s[i].english, s[i].total, s[i].average);
}
fclose(fp);
// 从文件中读取学生信息并计算总成绩和平均分
fp = fopen("d.txt", "r");
printf("学号\t姓名\t数学成绩\t语文成绩\t英语成绩\t总成绩\t平均分\n");
fscanf(fp, "%*[^\n]\n"); // 跳过第一行
for (int i = 0; i < 5; i++) {
fscanf(fp, "%d\t%s\t%d\t%d\t%d\t%d\t%f\n", &s[i].id, s[i].name, &s[i].math, &s[i].chinese, &s[i].english, &s[i].total, &s[i].average);
printf("%d\t%s\t%d\t%d\t%d\t%d\t%.2f\n", s[i].id, s[i].name, s[i].math, s[i].chinese, s[i].english, s[i].total, s[i].average);
}
fclose(fp);
return 0;
}
```
程序运行后,会在当前目录下生成一个名为d.txt的文件,里面记录了每个学生的信息。同时,程序会从文件中读取学生信息并计算总成绩和平均分,然后在屏幕上显示出来,如下所示:
```
学号 姓名 数学成绩 语文成绩 英语成绩 总成绩 平均分
30508001 令狐冲 81 75 82 238 79.33
30508002 林平之 87 68 85 240 80.00
30508003 岳灵珊 73 84 80 237 79.00
30508004 郑盈盈 76 81 74 231 77.00
30508005 田伯光 83 75 71 229 76.33
```
阅读全文