最低分都输出的是零,是哪错了
麻烦再帮忙看看方差计算那块有没有问题,计算方差调试的时候出现负值了
#include<stdio.h>
int m,n,L,M;
float score[60][9],stu[60],cla[9],high[9],low[9],fang;//各科分数,学生平均分 ,课程平均分 ,最高分,最低分 ,平均分方差
int main()
{
void ave_stu(void);//计算学生平均成绩
void ave_cla(void);//计算课程平均成绩
float highest();//计算最高成绩
float lowest();//计算最低成绩
float fangcha();//计算平均分方差
printf("请输入班级总人数和课程总数:");
scanf("%d,%d",&L,&M);
for(int i=0;i<L;i++)
{
for(int j=0;j<M;j++)
{
printf("请输入学生%d的成绩:",i+1);
scanf("%f",&score[i][j]);
}
}
ave_stu();
ave_cla();
lowest();
highest();
fangcha();
for(int i=0;i<L;i++)
{
printf("学生%d的平均分为:%f\n",i+1,stu[i]);
}
for(int i=0;i<M;i++)
{
printf("课程%d的平均分为:%f\n",i,cla[i]);
}
for(int i=0;i<M;i++)
{
printf("课程%d的最高分为:%f\n",i,high[i]);
}
for(int i=0;i<M;i++)
{
printf("课程%d的最低分为:%f\n",i,low[i]);
}
for(int i=0;i<M;i++)
{
printf("课程%d的最低分为:%f\n",i,low[i]);
}
printf("平均分的方差为:%f\n",fang);
}
void ave_stu(void)//计算学生平均分
{
int i,j;
float s;
for(i=0;i<L;i++)
{
for(j=0,s=0;j<M;j++)
{
s+=score[i][j];
}
stu[i]=s/M;
}
}
void ave_cla(void)//计算课程平均分
{
int i,j;
float s;
for(j=0;j<M;j++)
{ s=0;
for(i=0;i<L;i++)
{
s+=score[i][j];
}
cla[j]=s/L;
}
}
float highest()//计算最高分
{ int i,j;
float h;
h=score[0][0];
for(j=0;j<M;j++)
{
h=0;
for(i=0;i<L;i++)
{
if(score[i][j]>h)
h=score[i][j];
}
high[j]=h;
}
return(h);
}
float lowest()//计算低分
{ int i,j;
float l;
l=score[0][0];
for(j=0;j<M;j++)
{
l=0;
for(i=0;i<L;i++)
{
if(score[i][j]<l)
l=score[i][j];
}
low[j]=l;
}
return(l);
}
float fangcha()//计算平均分方差
{
int i,j;
float sum=0,fsum=0;
for(j=0;j<M;j++)
{
for(i=0;i<L;i++)
{
sum+=stu[i];
fsum+=(stu[i]*stu[i]);
}
}
fang=(fsum/L)-(sum/L)*(sum/L);
return(fang);
}