有一条问题

来源:百度知道 编辑:UC知道 时间:2024/06/09 09:14:38
3.将螺旋方阵存放到n×n的二维数组中并把它打印输出。要求由程序自动生成下图所示螺旋方阵。n由程序读入。
1 16 15 14 13

2 17 24 23 12

3 18 25 22 11

4 19 20 21 10

5 6 7 8 9
.
要求用数组解!

void main()
{
int a[100][100];
int n,i,j,k=0;
int b[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
int m,p,q;

printf("Please input n(n<100):");
scanf("%d",&n);
if(n>=100)
{
printf("n is more than 100.Please input again!\n");
exit(0);
}

for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j] = 0;
for(i=n;i<100;i++)
for(j=n;j<100;j++)
a[i][j] = -1;

i=0;
j=0;
k=0;
m=1;
while(m<=n*n)
{
if(a[i][j] == 0) a[i][j] = m++;
p=i+b[k][0];
q=j+b[k][1];
if(a[p][q]!=0 || p<0 || q<0) k=(k+1)%4;
i+=b[k][0];
j+=b[k][1];
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%8d",a[i][j]);
}
printf("\n");
}
getch();
}

main()
{int i=0,j=0,n,a[10][10],k=1,r=0,c=0,x;
printf("n=");
scanf("%d&q