以#include<stdlib.h> #define N 10 typedef struct { char no[15]; char name[10]; float score[3]; float aver; }STU; void Input_Info(STU a[], int n) { /********** Begin **********/ int main() /********** End **********/ } void Write_Info(STU a[], int n){ /********** Begin **********/ /********** End **********/ }为格式完成假设有若干学生,每个学生有3门功课,从键盘上输入学生有关信息(学号、姓名、成绩),并计算其平均成绩,将原有数据和平均分保存在磁盘文件record中。
时间: 2023-06-29 14:07:04 浏览: 99
栈和队列的基础上设计模拟停车场管理程序 停车场管理问题 #include<stdio.h> #include<stdlib.h> struct { char status; int num; int time; }a; /*命令的结构*/ typedef struct{ int num; int time; }Element; struct { Element *base; Element *top; in
代码如下:
```
#include <stdio.h>
#include <stdlib.h>
#define N 10
typedef struct {
char no[15];
char name[10];
float score[3];
float aver;
} STU;
void Input_Info(STU a[], int n) {
int i, j;
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的学号:", i + 1);
scanf("%s", a[i].no);
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", a[i].name);
printf("请输入第%d个学生的成绩:\n", i + 1);
for (j = 0; j < 3; j++) {
scanf("%f", &a[i].score[j]);
a[i].aver += a[i].score[j];
}
a[i].aver /= 3;
}
}
void Write_Info(STU a[], int n) {
FILE *fp;
int i;
if ((fp = fopen("record", "w")) == NULL) {
printf("文件打开失败!\n");
exit(0);
}
for (i = 0; i < n; i++) {
fprintf(fp, "%s %s %.2f %.2f %.2f %.2f\n", a[i].no, a[i].name, a[i].score[0], a[i].score[1], a[i].score[2], a[i].aver);
}
fclose(fp);
}
int main() {
STU a[N];
Input_Info(a, N);
Write_Info(a, N);
printf("数据已保存到文件record中!\n");
return 0;
}
```
主函数中,我们首先定义了一个 STU 类型的数组 a,用于存储学生的信息。然后调用 Input_Info 函数,从键盘上输入每个学生的信息并计算其平均成绩。最后调用 Write_Info 函数,将学生信息和平均成绩写入文件 record 中。
Input_Info 函数中,我们使用 for 循环逐个输入每个学生的信息,包括学号、姓名和成绩。在输入成绩时,我们使用了另一个 for 循环,依次输入每个学生的三门成绩,并计算平均成绩。
Write_Info 函数中,我们首先打开文件 record,如果打开失败则输出错误信息并退出程序。然后使用 for 循环将每个学生的信息和平均成绩写入文件中。最后关闭文件。
注意,在写入文件时,我们使用了 fprintf 函数,它与 printf 函数类似,但是可以将输出内容写入文件中。我们在文件中输出了每个学生的学号、姓名、三门成绩和平均成绩,中间用空格分隔。每个学生的信息占一行。
阅读全文