题目描述
本题要求从右下角开始按螺旋型递减打印数字方阵。
输入格式
输入为一个正整数n (1=<n<=20)。
输出格式
螺旋型递减顺序输出n行n列的数字方阵,每个数字占4个宽度,左对齐。
输入样例
在这里给出一组输入。例如:
4
输出样例
在这里给出相应的输出。例如:
10 9 8 7
11 2 1 6
12 3 4 5
13 14 15 16
#include<stdio.h>
int main()
{
int n,N,k,m,i,j,M;
scanf("%d",&n);
N=n*n; M=m=n;
k=n/2+n%2;//走多少圈
if(n==1){printf("1 ");return 0;}
int square[n][n];
for(;k>=1;k--)//存储数字.走k圈
{
for(i=n-1;i>m-n;i--)//先向左走,行不动,列--
{
square[n-1][i]=N;
N--;
}
for(i=n-1;i>m-n;i--)//再向上走,列不动,行--
{
square[i][m-n]=N;
N--;
}
for(i=m-n;i<n-1;i++)//先向右走,行不动,列++
{
square[m-n][i]=N;
N--;
}
for(i=m-n;i<n-1;i++)//再向下走,列不动,行++
{
square[i][n-1]=N;
N--;
}
n--;
}
if(M%2==1){square[M/2][M/2]=1;}
for(i=0;i<M;i++)//输出
{
for(j=0;j<M;j++)
{
printf("%-4d",square[i][j]);
}
printf("\n");
}
return 0;
}