小白 蛇形矩阵 编程出错找不到 求大神

#include
int main()
{
int a[100][100],b,c,d=2,f=1,g,h,e;
scanf("%d",&b);
e=b;
c=b/2;
h=b/2;
a[c][c]=1;
while(d<b*b)
{

        for(g=0;g<f;g++,d++)
            a[++c][h]=d;        
            for(g=0;g<f;g++,d++)    
                a[c][--h]=d;
                f++;
        for(g=0;g<f;g++,d++)        
                    a[--c][h]=d;
                for(g=0;g<f;g++,d++)
                    a[c][++h]=d;
                f++;
}
for(d=0;d<e;d++)
{
    printf("\n");
    for(c=0;c<e;c++)
        printf("%3d",a[d][c]);
}

}

原理输入3 输出5 6 7
4 1 8
3 2 9
输入7以下都可以 但是输入7或7以上就炸了不知道为什么
还有有的地方不简洁改一下

http://blog.csdn.net/yaqi_2010/article/details/51052495