用C语言编程,输入10个学生5门课的成绩,分别用函数计算每个学生的平均分,每门课的平均分,找出最高分对应的学生和课程,计算平均分方差
时间: 2024-02-18 16:04:21 浏览: 325
好的,这是一个比较综合的C语言编程题目,下面是示例代码:
```c
#include <stdio.h>
#include <math.h>
void calc_stu_avg(float *grades, int n) {
float sum = 0;
for (int i = 0; i < n; i++) {
sum += grades[i];
}
printf("%.2f", sum / n);
}
void calc_sub_avg(float (*grades)[5], int n) {
for (int i = 0; i < 5; i++) {
printf("第%d门课的平均分为:", i + 1);
float sum = 0;
for (int j = 0; j < n; j++) {
sum += grades[j][i];
}
printf("%.2f\n", sum / n);
}
}
void find_max(float (*grades)[5], int n, int *max_stu, int *max_sub) {
float max_grade = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < 5; j++) {
if (grades[i][j] > max_grade) {
max_grade = grades[i][j];
*max_stu = i;
*max_sub = j;
}
}
}
}
float calc_variance(float *grades, int n) {
float sum = 0;
float avg = 0;
for (int i = 0; i < n; i++) {
sum += grades[i];
}
avg = sum / n;
sum = 0;
for (int i = 0; i < n; i++) {
sum += pow(grades[i] - avg, 2);
}
return sum / n;
}
int main() {
float grades[10][5];
for (int i = 0; i < 10; i++) {
printf("请输入第%d个学生的5门成绩:\n", i + 1);
for (int j = 0; j < 5; j++) {
scanf("%f", &grades[i][j]);
}
}
printf("每个学生的平均分分别为:\n");
for (int i = 0; i < 10; i++) {
printf("第%d个学生的平均分为:", i + 1);
calc_stu_avg(grades[i], 5);
printf("\n");
}
printf("每门课的平均分分别为:\n");
calc_sub_avg(grades, 10);
int max_stu, max_sub;
find_max(grades, 10, &max_stu, &max_sub);
printf("最高分对应的学生为第%d个学生,最高分对应的课程为第%d门课\n", max_stu + 1, max_sub + 1);
float all_grades[50];
int k = 0;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
all_grades[k] = grades[i][j];
k++;
}
}
float variance = calc_variance(all_grades, 50);
printf("平均分方差为:%.2f\n", variance);
return 0;
}
```
上面的代码中,我们定义了四个函数 `calc_stu_avg`、`calc_sub_avg`、`find_max` 和 `calc_variance` 分别用来计算每个学生的平均分、每门课的平均分、找出最高分对应的学生和课程以及计算平均分方差。在 `main` 函数中,我们定义了一个二维数组 `grades` 来存储10个学生的5门成绩。接着,我们使用两个嵌套的循环分别输入每个学生的5门成绩,并将其存储到 `grades` 数组中。
然后,我们先使用一个循环遍历每个学生,将该学生的5门成绩存储到一个一维数组中,然后调用 `calc_stu_avg` 函数计算平均分并输出即可。
最后,我们依次调用 `calc_sub_avg` 函数计算每门课的平均分、`find_max` 函数找出最高分对应的学生和课程以及 `calc_variance` 函数计算平均分方差并输出即可。在 `find_max` 函数中,我们使用两个嵌套的循环遍历每个学生在每门课的成绩,并找出最高分。在 `calc_variance` 函数中,我们先计算出所有成绩的平均分,然后再计算每个成绩与平均分的差的平方,并求和。最后再除以成绩数即可得到平均分方差。
阅读全文