帮帮我,它那个科目五的最大值和最小值数为啥不对啊,我不理解啊(本人刚入c没多久)

#include<stdio.h>
int main(){
void averstu(int d[][15],int x,int y);
void avercourse(int d[][15],int x,int y);
void hl(int d[][15],int x,int y);
void vari(int d[][15],int x,int y);
int a[100][15],l,m,b,c;
printf("请输入学生:");scanf("%d",&l);
printf("请输入课目数:");scanf("%d",&m);
printf("请输入成绩:");
for(b=0;b<l;b++){
for(c=0;c<m;c++){
scanf("%d",&a[b][c]);
}
}
averstu(a,l,m);
avercourse(a,l,m);
hl(a,l,m);
vari(a,l,m);
return 0;
}
void averstu(int d[][15],int x,int y)
{
int i,e;
double sum,aver;
for (i= 0; i < x; i++) {
sum = 0.0;
for (e= 0; e < y; e++)
sum+=d[i][e];
aver = sum / y;
printf("学生%d平均分为:%.2f\n ",i+1,aver);
}
}
void avercourse(int d[][15],int x,int y)
{
int i,e;
double sum,aver;
for(e=0;e<y;e++){
sum=0.0;
for(i=0;i<x;i++)
sum+=d[i][e];
aver=sum/x;
printf("科目%d平均分为:%.2f\n ",e+1,aver);
}
}
void hl(int d[][15],int x,int y)
{
int max,min,i,e,t1,t2;
max=0;
min=100;
t1=0;t2=0;
for(e=0;e<y;e++){
for(i=0;i<x;i++){
if(d[i][e]>max){
max=d[i][e];
t1=i+1;
}
if(d[i][e]<min){
min=d[i][e];
t2=i+1;
}
}
printf("科目%d的最高分最低分是第%d,%d名学生",e+1,t1,t2);
i=0;
}

}
void vari(int d[][15],int x,int y)
{
int i,e;
double sum1,aver,vari,sum2,sum3;
for (i= 0; i < x; i++) {
sum1 = 0.0;
sum2=0.0;
for (e= 0; e < y; e++)
sum1+=d[i][e];
aver = sum1 / y;
sum2+=aver;
sum3=averaver;
}
vari=(sum3/x)-(sum2/x)
(sum2/x);
printf("方差:%.2f\n",vari);
}

img