定义结构体,包含学生学号,姓名和3门课成绩。定义一个函数,求若干学生的平均成绩。 主函数负责结构体数组的定义和输入。 要求:1)共自定义2个函数,分别对数组进行插入和输出。 2)数组、待插数据在主函数中定义和赋值。
时间: 2024-03-08 15:51:32 浏览: 71
好的,我可以帮你完成这个问题。下面是代码示例:
```c
#include <stdio.h>
#define N 3 // 学生数量
#define M 3 // 课程数量
struct Student {
int id; // 学号
char name[20]; // 姓名
float score[M]; // 成绩
};
void insert(struct Student stu[], int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%d", &stu[i].id);
printf("姓名:");
scanf("%s", stu[i].name);
for (int j = 0; j < M; j++) {
printf("第%d门课成绩:", j + 1);
scanf("%f", &stu[i].score[j]);
}
}
}
void output(struct Student stu[], int n) {
for (int i = 0; i < n; i++) {
printf("学号:%d,姓名:%s,成绩:", stu[i].id, stu[i].name);
for (int j = 0; j < M; j++) {
printf("%.1f ", stu[i].score[j]);
}
printf("\n");
}
}
float average(struct Student stu[], int n) {
float sum = 0;
int count = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < M; j++) {
sum += stu[i].score[j];
count++;
}
}
return sum / count;
}
int main() {
struct Student stu[N];
insert(stu, N);
output(stu, N);
printf("所有学生的平均成绩为:%.1f\n", average(stu, N));
return 0;
}
```
在这个示例中,我们定义了一个结构体 `Student`,包含了学号、姓名和成绩。我们还定义了三个函数:
- `insert` 函数用于向结构体数组中插入数据,通过循环输入每个学生的信息,包括学号、姓名和成绩。
- `output` 函数用于输出结构体数组中的数据,通过循环输出每个学生的信息,包括学号、姓名和成绩。
- `average` 函数用于计算学生的平均成绩,通过循环累加每个学生的成绩,并统计总共的成绩数量,最后求出平均成绩。
在 `main` 函数中,我们定义了一个结构体数组 `stu`,并调用 `insert` 函数和 `output` 函数,分别向数组中插入数据和输出数据。最后,我们调用 `average` 函数,求出所有学生的平均成绩,并输出结果。
阅读全文