#include<iostream> using namespace std; int main(){ int n,p,x=1; cin>>n; int a[n][n]; for(p=0;p<n/2;p++){ //循环次数 ,每次打一回字形 for(int i=p,j=p;j<=n-2-p;j++,x++){ //回字形,第一笔,从左到右,→ a[i][j]=x; } for(int i=p,j=n-1-p;i<=n-2-p;i++,x++){ //回字形,第二笔,从上到下,↓ a[i][j]=x; } for(int i=n-1-p,j=n-1-p;j>=p+1;j--,x++){ //回字形,第三笔,从右到左,← a[i][j]=x; } for(int i=n-1-p,j=p;i>=p+1;i--,x++){ //回字形,第四笔,从下到上,↑ a[i][j]=x; } } if(n%2!=0) a[p][p]=n*n; for(int i=0;i<=n-1;i++){ // 打印二维数组 for(int j=0;j<=n-1;j++){ //打印第 i行 cout<<a[i][j]<<" "; } cout<<"\n"; //每行末,换行 } return 0; }