内存区段错误怎么改啊

img

这个怎么改啊🙁

C语言不允许使用变量定义数组的大小。给你改一下代码
代码修改如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,m,b,sum=0;
    float score;
    int i,j;
    int** k;
    scanf("%d%d",&n,&m);
    k = (int**)malloc(sizeof(int*)*m);
    for (j=0;j<m;j++)
    {
        k[j] = (int*)malloc(sizeof(int)*n);
        for(i=0;i<n;i++)
        {
            scanf("%d",&k[j][i]);
            if(i==0)
                b = k[j][0];
            else
            {
                if(k[j][i] > b)
                    b = k[j][i];
            }
        }
        sum = sum +b;
    }
    score = 1.0*sum/m; //这里是除以m吧,你的行是m行啊
    printf("%.2f",score);
    for (i=0;i<m;i++)
    {
        free(k[i]);
        k[i]=0;
    }
    free(k);
    return 0;
}

k[j][i]不对啊
上面定义的i,j都没有给出具体值。
初始化二维数组,应该是根据输入的m,n值吧。
k[j][i]删掉,在scanf()后面定义k[m][n];
并且循环中的循环条件,把<=改为<