@[lbj444](/user/940254) $cnt$ 一开始初始化为 $1$。最后输出的时候要设置 $3$ 个场宽,建议直接用 `printf("%3d",a[i][j])`
by SunsetLake @ 2024-01-26 17:20:09
这样?本地运行显示编译错误
```
#include <bits/stdc++.h>
using namespace std;
int n,a[11][11],cnt=1,i=1,j=0;
int main(void){
cin>>n;
while(cnt<=n*n){
while(!a[i][j+1]&&j<n)a[i][++j]=cnt++;
while(!a[i+1][j]&&i<n)a[++i][j]=cnt++;
while(!a[i][j-1]&&j>1)a[i][--j]=cnt++;
while(!a[i-1][j]&&i>1)a[--i][j]=cnt++;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)cout<<a[i][j]<<" ";
printf("%3d",a[i][j])
}
return 0;
}
```
by lbj444 @ 2024-01-26 17:55:06