用c语言输入10个学生5门课的成绩,用函数实现下列功能 计算平均分方差
时间: 2024-06-13 11:08:05 浏览: 184
C语言程序设计-有一个一维数组score,内放10个学生的成绩,用一个函数来求平均成绩;
5星 · 资源好评率100%
以下是用C语言输入10个学生5门课的成绩,用函数实现计算平均分方差的方法:
```c
#include <stdio.h>
#include <math.h>
#define N 10
#define M 5
// 计算平均分
void average(float score[][M], float avg_stu[], float avg_course[]) {
int i, j;
float sum_stu, sum_course;
for (i = 0; i < N; i++) {
sum_stu = 0;
for (j = 0; j < M; j++) {
sum_stu += score[i][j];
avg_course[j] += score[i][j];
}
avg_stu[i] = sum_stu / M;
}
for (j = 0; j < M; j++) {
avg_course[j] /= N;
}
}
// 计算方差
float variance(float score[][M], float avg_stu[], float avg_course[]) {
int i, j;
float sum = 0;
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
sum += pow(score[i][j] - avg_stu[i], 2);
}
}
for (j = 0; j < M; j++) {
sum += pow(avg_course[j] - avg_stu[N], 2) * N;
}
return sum / (N * M);
}
int main() {
float score[N][M], avg_stu[N], avg_course[M];
int i, j, max_i, max_j;
float max_score = 0, var;
// 输入成绩
for (i = 0; i < N; i++) {
printf("请输入第%d个学生的成绩:\n", i + 1);
for (j = 0; j < M; j++) {
scanf("%f", &score[i][j]);
}
}
// 计算平均分
average(score, avg_stu, avg_course);
// 找出最高分数所对应的学生和课程
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
if (score[i][j] > max_score) {
max_score = score[i][j];
max_i = i;
max_j = j;
}
}
}
printf("最高分数为%.2f,对应的学生为%d,课程为%d\n", max_score, max_i + 1, max_j + 1);
// 计算平均分方差
var = variance(score, avg_stu, avg_course);
printf("平均分方差为%.2f\n", var);
return 0;
}
```
阅读全文