完成基于结构体数组的学生成绩处理程序。定义学生结构体数组 stu[3],实现以下函数功能E main 函数中调用。 1) imput 函数的功能是: 从键盘输入 3 名学生信息(包括学号、姓名和 3 门课的成绩)2) average 函数的功能是: 计算每名学生平均成绩 3) output 函数的功能是:输出 3 名学生全部信息
时间: 2023-06-19 22:08:48 浏览: 143
以下是基于结构体数组的学生成绩处理程序的完整代码实现:
```c
#include <stdio.h>
#include <string.h>
struct student {
char id[10]; // 学号
char name[20]; // 姓名
float score[3]; // 3门课的成绩
float avg; // 平均成绩
};
void input(struct student stu[]);
void average(struct student stu[]);
void output(struct student stu[]);
int main() {
struct student stu[3];
input(stu);
average(stu);
output(stu);
return 0;
}
void input(struct student stu[]) {
printf("请输入3名学生的信息:\n");
for (int i = 0; i < 3; i++) {
printf("第%d个学生:\n", i+1);
printf("学号:");
scanf("%s", stu[i].id);
printf("姓名:");
scanf("%s", stu[i].name);
printf("三门课成绩:");
for (int j = 0; j < 3; j++) {
scanf("%f", &stu[i].score[j]);
}
}
}
void average(struct student stu[]) {
for (int i = 0; i < 3; i++) {
float sum = 0;
for (int j = 0; j < 3; j++) {
sum += stu[i].score[j];
}
stu[i].avg = sum / 3;
}
}
void output(struct student stu[]) {
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
for (int i = 0; i < 3; i++) {
printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[i].id, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].avg);
}
}
```
在 main 函数中,定义了一个包含 3 个学生结构体的数组 `stu`,然后依次调用 `input`、`average` 和 `output` 函数实现输入学生信息、计算平均成绩和输出全部信息的功能。
在 `input` 函数中,使用循环依次输入每个学生的学号、姓名和 3 门课的成绩,保存在对应的结构体中。
在 `average` 函数中,同样使用循环依次计算每个学生的 3 门课的总成绩,并计算出平均成绩,保存在对应的结构体中。
在 `output` 函数中,使用循环依次输出每个学生的学号、姓名、3 门课的成绩和平均成绩。
最终输出的结果如下:
```
请输入3名学生的信息:
第1个学生:
学号:1001
姓名:张三
三门课成绩:85 90 88
第2个学生:
学号:1002
姓名:李四
三门课成绩:78 83 80
第3个学生:
学号:1003
姓名:王五
三门课成绩:92 88 90
学号 姓名 成绩1 成绩2 成绩3 平均成绩
1001 张三 85.00 90.00 88.00 87.67
1002 李四 78.00 83.00 80.00 80.33
1003 王五 92.00 88.00 90.00 90.00
```