回型矩阵输出结果不全

#include<stdio.h>
#define n 7

void main()
{
int i,j,a[n][n],k;
k=1;

for(i=1;i<=n/2;i++)
{
    for(j=1;j<=n-i;j++)//上方
    {
        a[i][j]=k;
        k=k+1;
    }
    for(j=i;j<=n-i;j++)//右侧
    {
        a[j][8-i]=k;
        k=k+1;
    }
    for(j=n+1-i;j>=i+1;j--)//下方
    {
        a[8-i][j]=k;
        k=k+1;
    }
    for(j=n-i+1;j>=i+1;j--)//左侧
    {
        a[j][i]=k;

        k=k+1;
    }
}

if(n%2==1)
{
    i=(n+1)/2;
    a[i][i]=n*n;
}
for(i=1;i<=n;i++)
{
    for(j=1;j<=n;j++)
        printf("%2d ",a[i][j]);
    printf("\n");
}

}

img