回形输出二维数组,我的代码错在哪里?

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

img

img

用代码块功能插入代码,请勿粘贴截图
#include

int main(){
    int m, n;
    scanf("%d%d", &m, &n);
    int a[n][m];
    for(int i=0; ifor(int j=0; j"%d", &a[j][i]);

        }
    }
    for(int ii=0; iifor(int jj=0; jj"%d ", a[jj][ii]);
        }
        printf("\n");
    }
    
    int w=0, c=0, i;
    int l1=m-1, l2=n-1;
    while(cfor(i=w; i"%d ", a[w][i]);
        c++;        
    }
    if(c==m*n) break;
    for(i=w; i"%d ", a[i][m-1]);
        c++;        
    }
    if(c==m*n) break;
    for(i=l1; i>w; i--){
        printf("%d ", a[n-1][i]);
        c++;        
    }
    if(c==m*n) break;
    for(i=l2; i>w; i--){
        printf("%d ", a[i][w]);
        c++;        
    }
    if(c==m*n) break;
    
    w++;
    l1--;
    l2--;
    
    }
    return 0;
}

为什么只能输出最外圈啊?问题出在哪里呀?
求解答