假设有若干学生,每个学生有3门功课,从键盘上输入学生有关信息(学号、姓名、成绩),并计算其平均成绩,将原有数据和平均分保存在磁盘文件record中。具体要求如下: 学生有关信息采用结构体类型存储。 fwrite()函数实现数据块输出到文件record。 结合循环结构实现数据输入和输出。 两个函数的作用如下: 函数Input_Info(STU a[], int n)对学生信息使用键盘进行输入。其中的参数为: STU a[]: 学生结构体数组,大小为N,代表最大存储学生信息条数,这里给定N = 10。 int n: 需要输入的学生信息条数,且n<=N。 函数Write_Info(STU a[], int n)将读到学生信息结构体数组使用fwrite()函数写入到文件中。其中参数为: STU a[]: 已经保存有n个学生信息的学生结构体数组。 int n: 输入的学生信息条数,且n<=N。 输入: 第一行为一个整数n,代表需要写入的学生信息条数。 第二行开始每一行输入一条学生信息。 输出: 平台会测试输出的文件,将写入的学生信息输出。 相关知识 相关知识略 编程要求 请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写计算平均分的小程序。 测试说明 平台会对你编写的代码进行测试: 测试输入: 1 201901 Jerry 68 87 66 预期输出: 201901 Jerry 68.000000 87.000000 66.000000 73.666664
时间: 2024-03-20 15:40:45 浏览: 63
```
#include <stdio.h>
typedef struct {
int num;
char name[10];
float score[3];
float avg;
} STU;
void Input_Info(STU a[], int n);
void Write_Info(STU a[], int n);
int main() {
STU a[10];
int n;
scanf("%d", &n);
Input_Info(a, n);
Write_Info(a, n);
return 0;
}
void Input_Info(STU a[], int n) {
int i, j;
for(i = 0; i < n; i++) {
scanf("%d %s", &a[i].num, a[i].name);
for(j = 0; j < 3; j++) {
scanf("%f", &a[i].score[j]);
}
a[i].avg = (a[i].score[0] + a[i].score[1] + a[i].score[2]) / 3;
}
}
void Write_Info(STU a[], int n) {
FILE *fp;
fp = fopen("record", "wb");
fwrite(a, sizeof(STU), n, fp);
fclose(fp);
printf("学号\t姓名\t科目1\t科目2\t科目3\t平均分\n");
for(int i = 0; i < n; i++) {
printf("%d\t%s\t%.6f\t%.6f\t%.6f\t%.6f\n", a[i].num, a[i].name, a[i].score[0], a[i].score[1], a[i].score[2], a[i].avg);
}
}
```
阅读全文