提交时间:2019-12-21 11:17:23
运行 ID: 3703
#include<iostream> using namespace std; int main(){ int n,a[101][101],k=1; cin>>n; // 要构建的圈数 (n+1)/2 for(int i=1;i<=(n+1)/2;i++){ // 每圈的左上角:a[i][i] // 每圈的右上角:a[i][n+1-i] // 每圈的右下角:a[n+1-i][n+1-i] // 每圈的左下角:a[n+1-i][i] // 第一步:画上部(从左到右) for(int j=i;j<=n+1-i;j++){ a[i][j]=k++; } // 第二步:画右部(从上到下) for(int j=i+1;j<=n+1-i;j++){ a[j][n+1-i]=k++; } // 第三步:画下部 (从右到左) for(int j=n+1-i-1;j>=i;j--){ a[n+1-i][j]=k++; } // 第四步:画左部 (从下到上) for(int j=n+1-i-1;j>=i+1;j--){ a[j][i]=k++; } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cout<<a[i][j]<<" "; } cout<<endl; } return 0; }