请问为什么我输出全是零啊?

#include<stdio.h>
#define M 32
#define N 32
void account( int a[M ][N ],int x, int s ,int q, int o)
{
if (x > 0)
{
int a[M][N] = { 0 };
int i = 0;
for (int v=q; v <= x; v++)
{
a[s][v] = o + i;
i++;
}

    for (int v=q+1 ; v <= x ; v++)
    {
        a[v][x] = o + i;
        i++;
    }
    for (int v = x - 1; v >= s; v--)
    {
        a[x][v] = o + i;
        i++;
    }
    for (int v = x - 1; v >= s + 1; v--)
    {
        a[v][s] = o + i;
        i++;
    }
    account(a[M][N], x - 2, s + 1, q + 1, o + i);
}

}
int main()
{
int a[32][32] = { 0 };
int n;
int u = 1;
int z = 1;
int p = 1;
scanf_s("%d", &n);
account(a[32][32], n,u,z,p);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
if (j == n)printf("%4d\n", a[i][j]);
else printf("%4d", a[i][j]);
}
}
return 0;
}

你这个题目是什么?

你题目的解答代码如下:

#include <stdio.h>
#define M 32
#define N 32
void account(int a[M][N], int x, int s, int q, int o)
{
    if (x > 0)
    {
        //7int a[M][N] = {0};
        int i = 0;
        for (int v = q; v <= x; v++)
        {
            a[s][v] = o + i;
            i++;
        }

        for (int v = q + 1; v <= x; v++)
        {
            a[v][x] = o + i;
            i++;
        }
        for (int v = x - 1; v >= s; v--)
        {
            a[x][v] = o + i;
            i++;
        }
        for (int v = x - 1; v >= s + 1; v--)
        {
            a[v][s] = o + i;
            i++;
        }
        account(a, x - 2, s + 1, q + 1, o + i);
    }
}
int main()
{
    int a[32][32] = {0};
    int n;
    int u = 1;
    int z = 1;
    int p = 1;
    scanf_s("%d", &n);
    account(a, n, u, z, p);
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            if (j == n)
                printf("%4d\n", a[i][j]);
            else
                printf("%4d", a[i][j]);
        }
    }
    return 0;
}

如有帮助,望采纳!谢谢!