学生平均分综合练习
1、求学生平均分
2.求每门课平均分
3.找出最高分数的课程与学生
4.求平均分方差(计算错误,找不出原因)
#include<stdio.h>
#include<math.h>
#define M 10
#define N 5
float Average(float score[M][N],int m,int n);
float ClassAverage(float score[M][N],int m,int n);
float Maxscore(float score[M][N],int m,int n);
float VarianceAve(float score[M][N],int m,int n);
int main(void){
float score[M][N]={{87,88,92,67,78},{88,86,87,98,90},{76,75,65,65,78},
{67,87,60,90,67},{77,78,85,64,56},{76,89,94,65,76},
{78,75,64,67,77},{77,76,56,87,85},{84,67,78,76,89},
{86,75,64,69,90}};
float avearr[M];
float classAve[N];
for(int i=0;i<M;i++)
avearr[i]=Average(score,i,N);
for(int i=0;i<M;i++)
printf("the %d student's average score is %f\n",i+1,avearr[i]);
for(int i=0;i<N;i++)
classAve[i]=ClassAverage(score,M,i);
for(int i=0;i<N;i++){
printf("the %d lesson's average score is %f\n",i+1,classAve[i]);
}
Maxscore(score,M,N);
float variance=VarianceAve(score,M,N);
printf("The variance is %f\n",variance);
}
float Average(float score[M][N],int m,int n){
float ave=0;
for(int i=0;i<n;i++)
ave+=score[m][i];
ave/=n;
return ave;
}
float ClassAverage(float score[M][N],int m,int n){
float classAve=0;
for(int i=0;i<M;i++){
classAve+=score[i][n];
}
return classAve/m;
}
float Maxscore(float score[M][N],int m,int n){
int row=0,col=0;
float max=score[0][0];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++){
if(max<score[i][j]){
row=i;
col=j;
max=score[i][j];
}
}
printf("Max score is %f,student %d,class %d.\n",max,row,col);
return max;
}
float VarianceAve(float score[M][N],int m,int n){
float f1=0,f2=0;
for(int i=0;i<m;i++){
float aveStu=Average(score,i,n);
f1+=pow(aveStu,2);
f2+=aveStu;
}
f1/=n;
f2=pow(f2/n,2);
return f1-f2;
}