1、下面是一个5*5阶的螺旋方阵。编程打印出此形式的n*n(n<=15)阶的方阵(顺时针方向旋进),n由键盘输入。
┌ 1 2 3 4 5 ┐
│ 16 17 18 19 6 │
│ 15 24 25 20 7 │
│ 14 23 22 21 8 │
└ 13 12 11 10 9 ┘
2、例程:
#include
int get(int x, int y, int lt, int n)
{
if(x == 0)
return lt+y;
else if(y == 0)
return lt+4*(n-1)-x;
else if(y == n-1)
return lt+n+x-1;
else if(x == n-1)
return lt+3*(n-1)-y;
else
return get(x-1, y-1, lt+4*(n-1), n-2);
}
int main(void)
{
int n, i, j;
scanf("%d", &n);
for(i = 0; i < n; ++i) {
for(j = 0; j < n; ++j)
printf("%2d ", get(i, j, 1, n));
putchar('\n');
}
return 0;
}
#include
int a[100][100];
main()
{
int i,j,k,x,y,n;
scanf("%d",&n);
for(x=0;x
j=1;
for(k=1;k<=n*n;k++)
{a[x][y]=k;
if(x+i<0 || y+j<0 || x+i>=n || y+j>=n || a[x+i][y+j]>0)
{if(j!=0){i=j;j=0;}
else{j=-i;i=0;}}
x=x+i;
y=y+j;}
for(y=0;y
printf("\n");}
getch();
}