用二维数组打印出蛇形矩阵

img


思考了两下 没想到点 怎么根据从里到外 好像得需要用到双重for 求给出讲解

int main()
{
    int n = 0;
    scanf("%d", &n);
    int i = 0;
    int j = 0;
    int num = 1;
    int a[12][12] = { 0 };

    int t = ceil(1.0 * n / 2);//转的圈数为行数除以2,如果行数是奇数还要+1,其实就是ceil。
    for (int i = 0; i<t; i++)
    {
        for (int j = i; j < n - i; j++)
        {
            a[i][j] = num++;//向右
        }
        for (int j = i + 1; j < n - i;j++)
        {
            a[j][n - i - 1] = num++;//向下
        }
        for (j = n - i - 2; j >= i;j--)
        {
            a[n - i - 1][j] = num++;//向左
        }
        for (j = n - i - 2; j >= i + 1;j--)
        {
            a[j][i] = num++;//向上
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            printf("%3d", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}