螺旋方阵
Time Limit: 1000MSMemory Limit: 65536KB
问题描述
n×n的螺旋方阵当n=5和n=3时分别是如下的形式
请给出一个程序,对于任意的输入n(0<n<11),输出按照上面规律所获得的n×n的螺旋方阵。
输入
输入第一行为整数m(0<m<10),代表有m组输入;
接下来是m行数据,每行输入一个n(0<n<11)。
接下来是m行数据,每行输入一个n(0<n<11)。
输出
按照输入的次序,依次输出每一个n×n方阵(一个方阵的同一行数据之间以'\t'分隔)
两个输出方阵之间输出一个空行。
两个输出方阵之间输出一个空行。
示例输入
1
4
示例输出
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
代码示例:
#include<stdio.h>
int main()
{
int m,n;
scanf("%d",&m);
while(m--)
{
scanf("%d",&n);
int k=0,a[n+1][n+1],i,j;
int x,y,z;
for(i=1; i<=n; i++)
{
for(j=i; j<=n-i+1; j++)
{
k++;
a[i][j]=k;
}
for( x=i+1; x<=n-i+1; x++)
{
k++;
a[x][n-i+1]=k;
}
for( y=n-i; y>=i; y--)
{
k++;
a[n-i+1][y]=k;
}
for( z=n-i; z>i; z--)
{
k++;
a[z][i]=k;
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<n; j++)
printf("%d\t",a[i][j]);
printf("%d\n",a[i][j]);
}
printf("\n");
}
return 0;
}