代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m,n;
cin>>m;
while(m--)
{
cin>>n;
int k=0,a[n+1][n+1],i,j;
for(i=1;i<=n;i++)
{
for(j=i;j<=n-i+1;j++)
{
k++;
a[i][j]=k;
}
for(int x=i+1;x<=n-i+1;x++)
{
k++;
a[x][n-i+1]=k;
}
for(int y=n-i;y>=i;y--)
{
k++;
a[n-i+1][y]=k;
}
for(int 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;
}
分析:
n行i从1到n进行循环,从外层逐渐向内找出每行每列含n和i的循环的限制条件即可
注意细节:处理好细节,每一次循环要想清楚,不能着急