帮我看看这个chengxu的问

来源:百度知道 编辑:UC知道 时间:2024/05/16 04:27:49
main()
{int n;
scanf("%d",&n);
int i=1,j=2,k=1,f=0,a[100][100]={0},h,g;
a[i][j]=k;
for(i=1;i<=n;i++)
{a[i][i]=-1;
a[i][n+1-i]=-1;
}
while (a[n/2+1][n/2]==0)
{if(f==0)if(a[i][j+1]==0)a[i][++j]=++k;else {f=(f+1)%4;i++;j++;a[i][j]=++k;}
if(f==1)if(a[i+1][j]==0)a[++i][j]=++k;else {f=(f+1)%4;i++;j--;a[i][j]=++k;}
if(f==2)if(a[i][j+1]==0)a[i][--j]=++k;else {f=(f+1)%4;i--;j--;a[i][j]=++k;}
if(f==3)if(a[i][j+1]==0)a[--i][j]=++k;else {f=(f+1)%4;j=j+2;a[i][j]=++k;}

for (h=1;h<=n;h++)
{for(g=1;g<=n;g++)
printf ("%4d",a[h][g]);
printf("\n");
}
}
getchar();getchar();getchar();getchar();getchar();getchar();getchar();getchar();
}
c 语言
输入N=5
输出
() 1 2 3 ()
12 () 13 () 4
11 16 () 14 5
10 () 15 () 6
() 9 8 7 ()
5*5螺旋方阵 ()为空格 方向为右、下、左、上 将它每个数对齐

写的太乱了,说一下你这个程序的目的吧,只是输出一个五行三列的?你确定?
还是不清楚,第一个空格为什么第二行也是3个?
主要的一个问题是你要清楚数组的下标是从0开始的