用c语言写这个程序:有N个学生,每个学生有3门课的成绩,从键盘输入学生的信息(包括学号,姓名,三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud.dat”(二进制文件)中;再读盘并以表格形式在显示器上输出。
时间: 2024-01-01 09:05:56 浏览: 71
好的,以下是用C语言实现的程序:
```c
#include <stdio.h>
struct Student {
char id[20];
char name[20];
float score[3];
};
int main() {
int n; // 学生个数
float sum[3] = {0}; // 每门课程的总成绩
struct Student stu;
FILE *outfile = fopen("stud.dat", "wb"); // 打开文件
printf("请输入学生人数:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%s", stu.id);
printf("姓名:");
scanf("%s", stu.name);
printf("成绩:");
for (int j = 0; j < 3; j++) {
scanf("%f", &stu.score[j]);
sum[j] += stu.score[j];
}
fwrite(&stu, sizeof(stu), 1, outfile); // 写入文件
}
fclose(outfile); // 关闭文件
// 计算平均成绩
float avg[3];
for (int i = 0; i < 3; i++) {
avg[i] = sum[i] / n;
}
FILE *infile = fopen("stud.dat", "rb"); // 打开文件
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n");
while (fread(&stu, sizeof(stu), 1, infile)) { // 读取文件
float s = 0;
printf("%s\t%s\t", stu.id, stu.name);
for (int i = 0; i < 3; i++) {
printf("%.1f\t", stu.score[i]);
s += stu.score[i];
}
printf("%.1f\n", s / 3); // 输出平均分
}
fclose(infile); // 关闭文件
return 0;
}
```
这个程序与之前的C++实现思路类似,不过使用了C语言的文件操作函数。注意在写入文件时使用的是`fwrite`函数,读取文件时使用的是`fread`函数。同时,文件的打开模式需要使用`"wb"`和`"rb"`来进行二进制文件的读写操作。
希望对你有帮助!
阅读全文