大神,教一下小白,这个runtime error 肿么改

#include
#define L 10
void f(int a[],int fan[][L],int m);
void output(int fan[][L],int m);
int main(void)
{
int i,j,m,w=0;
int fan[L][L]={0},a[L];
for(i=0;i<L;i++)
{
scanf("%d",&a[i]);

    if(a[i]==0) break;
 w++;
}
for(i=0;i<w;i++)
{
    m=a[i];
    f(a,fan,m);
    output(fan,m);
}
return 0;

}
void f(int a[],int fan[][L],int m)
{
int b=0,c,d;
d=m/2;
fan[b][d]=1;
for(c=2;c<=m*m;c++)
{
b--;d++;
{
if((b<0)&&(d==m))
{
b=1;d=m-1;

    }
    if(b<0)
    {
        b=m-1;
    }
    if(d==m)
    {
        d=0;
    }
    }
    if(fan[b][d]!=0) {b=b+2;d=d-1;}
    fan[b][d]=c;
}

}
void output(int fan[][L],int m)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
if(j==m-1) printf("%d",fan[i][j]);
else printf("%d ",fan[i][j]);
fan[i][j]=0;
}
printf("\n");
}
}

多数是数组越界什么的。断点调试一下。

这么操作,codeblocks不会调试

运行错误一般是在走后台数据的时候发生数组越界之类的错误了