要求实现图形的最外圈由Z组成,然后向内一圈由Y组成,再向内一圈由X组成,依次类推,哪位哥帮我看看我代码哪儿有问题

#include<stdio.h>
int main()
{
    int i,j,k=0,x,y,n,tx,ty;
    char a[1003][1003];
    int px[4]={0,1,0,-1};//旋转时的行变化 
    int py[4]={1,0,-1,0};//旋转时的列变化 
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        x=i;
        y=i;//起点为(i,i,) 
        for(j=0;j<8*(n-i)-8;j++)//每一圈的数有8*(n-i)-8个 
        {
            a[x][y]='Z'-i%26;
            tx=x+px[k];
            ty=y+py[k];/,ty用来表示当前数的下一位 
            if((tx==2*n-1)||(ty==2*n-1)||(tx<0)||(ty<0)||a[tx][ty])//拐弯条件(溢出或碰到已经赋值的位置) 
            {
                if((tx==i+1)&&(ty==i+1)) break;//当要拐入下一圈的时候停止 
                else
                  k=(k+1%4);
            }
            x=x+px[k];
            y=y+px[y];
        }
    }
    for(x=0;x<2*n-1;x++){
        for(y=0;y<2*n-1;y++)
            printf("%c",a[x][y]);
        printf("\n");
    }
    return 0;
} 
//5
//ZZZZZZZZZ
//ZYYYYYYYZ
//ZYXXXXXYZ
//ZYXWWWXYZ
//ZYXWVWXYZ
//ZYXWWWXYZ
//ZYXXXXXYZ
//ZYYYYYYYZ
//ZZZZZZZZZ