C语言遇到没见过的报错,求解决

代码初学者,今天写了一个循环语句超多的程序,然后vs就给我报错了,不知道是什么意思,也不知道如何解决,望大家能指正,代码贴在下图中:
并附上题目:

img

img

img

#define  _CRT_SECURE_NO_WARNINGS 1
#include
#pragma pack(1)
int main() {
    int m, N;
    int i, j, k, l, o, mul, sum;
    mul = 1;
    sum = 0;
    printf("将生成一个N*m的二维数组A和一个m*N的二维数组B,请您按先后输入m与N的值:");
    scanf_s("%d,%d", &m, &N);

    int arrayA[100][100] = { 0 };
    int arrayB[100][100] = { 0 };
    int arrayC[100][100] = { 0 };
    printf("请您一行行的输入二维数组A中元素的值:\n");
    for (i = 0; i <= N - 1; i++) {
        printf("第%d行:", i + 1);
        for (j = 0; j <= m - 1; j++) {
            scanf_s("%d", &arrayA[i][j]);
        }
    }
    printf("请您一行行的输入二维数组B中元素的值:\n");
    for (i = 0; i <= m - 1; i++) {
        printf("第%d行:", i + 1);
        for (j = 0; j <= N - 1; j++) {
            scanf_s("%d", &arrayB[i][j]);
        }
    }
    for (i = 0; i <= N - 1; i++) {
        for (j = 0; j < m - 1; j++) {
            k = j + 1;
            for (; k <= m - 1; k++) {
                if (arrayA[i][j] >= arrayA[i][k]) {
                    l = arrayA[i][k];
                    arrayA[i][k] = arrayA[i][j];
                    arrayA[i][j] = l;
                }
            }
        }
    }
    for (i = 0; i <= m - 1; i++) {
        for (j = 0; j < N - 1; j++) {
            k = j + 1;
            for (; k <= N - 1; k++) {
                if (arrayB[i][j] >= arrayB[i][k]) {
                    l = arrayB[i][k];
                    arrayB[i][k] = arrayB[i][j];
                    arrayB[i][j] = l;
                }
            }
        }
    }
    for (i = 0; i <= N - 1; i++) {
        for (o = 0; 0 <= N - 1; o++) {
            for (j = 0; j <= m - 1; j++) {
                mul = arrayA[i][j] * arrayB[j][o];
                sum += mul;
            }
            arrayC[i][o] = sum;
        }
    }
    printf("下面是数组相乘后得到的二维数组C:\n");
    for (i = 0; i <= N - 1; i++) {
        printf("第%d行:", i);
        for (j = 0; j <= N - 1; j++) {
            printf("%d", arrayC[i][j]);
        }
        printf("\n");
    }
    printf("验证部分:下面是经过排序后的数组A:\n");
    for (i = 0; i <= N - 1; i++) {
        for (j = 0; j <= m - 1; j++) {
            printf("%d", arrayA[i][j]);
        }
        printf("\n");
    }
    printf("下面是经过排序后的数组B:\n");
    for (i = 0; i <= m - 1; i++) {
        for (j = 0; j <= N - 1; j++) {
            printf("%d", arrayB[i][j]);
        }
        printf("\n");
    }
    return 0;
}

0 <= N - 1;
这里你写的是数字0,不是字母o
是个恒真表达式
所以是个标准死循环
o越界之后肯定报错了呀