我编写的二维数组排序不能运行

程序要求是将二维数组元素排列后输出,我的想法是将其转化为一维数组排序后再转化回来,但是当我输入数据后,它没有输出,这是怎么回事?

img

img


这个是我输入的结果,没有输出。怎么回事呢

img


#include<stdio.h>//a二维数组元素从小到大(先左右后上下)的排序
int main(){
    int a[50][50];
    int i, j, n, m;
    int k = 0;
    int b[];
    scanf("%d%d", &n, &m);//输入矩阵的长(n)和宽(m)
    for(i = 0; i < n; i++) {
        for(j = 0; j < m; j++) {
            scanf("%d", &a[i][j]);
        } 
    } //输入矩阵每一个元素的值
    for(i = 0; i < n; i++) {
        for(j = 0; j < m; j++) {
            b[k++] = a[i][j]; 
        } 
    }//将二维数组a转化为一维数组b
    i = j = 0;//清零,作另一个用途
    for(k = 0; k < n*m; k++) {
        if(b[k] > b[k + 1]) {
            i = b[k];
            b[k] = b[k + 1];
            b[k + 1] = i;
        } 
    } //对一维数组b进行冒泡法排序
    for(i = 0; i < n; i++) {
        for(j = 0; j < m; j++) {
            a[i][j] = b[i*m + j];
        } 
    } //将排序完的b数组元素依次填入二维数组a中
    for(i = 0; i < n; i++) {
        for(j = 0; j < m; j++) {
            printf("%d ", a[i][j]);
        } 
    } //输出a数组元素排列的结果
    return 0;
}

```

int b[];这样不行;
应该改为
int b[2500];