二维数组的输入输出,找不到哪里有bug

问题遇到的现象和发生背景

二维数组的输入输出,搞不懂哪里出了问题

用代码块功能插入代码,请勿粘贴截图
#include
void average(int a[][20]);
int l,m;
int main()
{
    printf("请依次输入人数和门数:");
    scanf("%d%d", &l, &m);
//    printf("%d %d",l,m);    
    int a[l][m];
    int i,j;
    for ( i = 0; i < l; i++) {
        printf("请输入第%d位同学的成绩:\n",i+1);
        for (j = 0; j < m; j++) {
            printf("第%d门:",j+1);
            scanf("%d",&a[i][j]);
        }
    }
    average(a);

}
void average(int a[][20])
{
    int i=0,j=0,k=0;
    for ( i = 0; i < l; i++) {
        int sum=0;
        for ( j = 0; j < m; j++) {
            sum+=a[i][j];
        }
        printf("第%d同学的成绩是%d\n",++k,sum/m);
    }
}

运行结果及报错内容

debug的时候发现使用average函数的时候i,j的变化有问题,但是看了好多遍不知道哪有问题,大家帮忙看看

修改如下,供参考:

#include <stdio.h>
#define N 21            //修改
void average(int a[][N]);//修改
int l,m;
int main()
{
    printf("请依次输入人数和门数:");
    scanf("%d%d", &l, &m);
                  //printf("%d %d",l,m);
    int a[N][N];  //a[l][m]; //修改
    int i,j;
    for (i = 0; i < l; i++) {
        printf("请输入第%d位同学的成绩:\n",i+1);
        for (j = 0; j < m; j++) {
            printf("第%d门:",j+1);
            scanf("%d",&a[i][j]);
        }
    }
    average(a);
    return 0;
}
void average(int a[][N]) //修改
{
    int i=0,j=0,k=0;
    for (i = 0; i < l; i++) {
        int sum=0;
        for (j = 0; j < m; j++) {
            sum+=a[i][j];
        }
        printf("第%d同学的平均成绩是%.2f\n",++k,(float)sum/m);//修改
    }
}

抱歉头文件没复制好,应该是#include<stdio.h>