输入n(4<=n<=20)个学生m(2<=m<=5)门课程的成绩,分别求每个学生的平均成绩和每门课程的平均成绩。
时间: 2024-10-03 07:01:13 浏览: 141
在C语言中,你可以使用结构体来表示学生和他们的课程成绩,然后创建一个二维数组来存储所有学生的数据。接着,你需要遍历这个数组来计算每个学生的平均成绩和每门课程的平均成绩。这里是一个简单的示例代码:
```c
#include <stdio.h>
// 定义一个结构体表示学生
typedef struct {
int id;
float scores[5]; // 存储最多5门课的成绩
} Student;
int main() {
int n, m;
printf("请输入学生人数(4 <= n <= 20): ");
scanf("%d", &n);
printf("请输入课程数(2 <= m <= 5): ");
scanf("%d", &m);
// 检查输入的有效性
if (n < 4 || n > 20 || m < 2 || m > 5) {
printf("输入范围错误,请重新输入。\n");
return 1;
}
// 创建并初始化学生数据
Student students[n];
for (int i = 0; i < n; ++i) {
students[i].id = i + 1;
for (int j = 0; j < m; ++j) {
printf("请输入学生 %d 的第 %d 门课成绩: ", students[i].id, j + 1);
scanf("%f", &students[i].scores[j]);
}
}
// 计算每个学生的平均成绩
for (int i = 0; i < n; ++i) {
float total = 0.0;
for (int j = 0; j < m; ++j) {
total += students[i].scores[j];
}
printf("学生 %d 的平均成绩: %.2f\n", students[i].id, total / m);
}
// 计算每门课程的平均成绩
float course_totals[m] = {0.0};
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
course_totals[j] += students[i].scores[j];
}
}
for (int j = 0; j < m; ++j) {
printf("第 %d 门课程的平均成绩: %.2f\n", j + 1, course_totals[j] / n);
}
return 0;
}
```
当你运行这段代码时,它会提示你输入学生人数和课程数,以及每个学生的各门课程成绩。然后,程序会计算每个学生的平均成绩以及每门课程的平均成绩。
阅读全文