@[天才小萧](/user/427617)
改了,试一下。
```cpp
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n, a[50][50]={0}, x, y;//={0}漏了!必须加,不然可能初始值就不等于0!
cin >> n;
a[1][n / 2 + 1] = 1;
x = 1, y = n / 2 + 1;
for(int i = 2; i <= n * n; i++){
if(x == 1 && y != n){
a[n][y + 1] = i;
x = n; y++;
}else if(x != 1 && y == n){
a[x - 1][1] = i;
x --; y = 1;
}else if(x == 1 && y == n){
a[2][n] = i;
x = 2;
}else if(x != 1 && y != n){
if(a[x - 1][y + 1] == 0){ //上面没初始化,这里就要错!
a[x - 1][y + 1] = i;
x--; y++;
}else{
a[x + 1][y] = i; x++;
}
}
}for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
cout << a[i][j] << ' ';
}cout << endl;
}
return 0;
}
```
by A524 @ 2021-03-14 08:00:48
@[小A](/user/484922) 谢谢 但是错的不是你说的 是14行的i--中间多了个空格 现在已经AC了
by 蒟蒻珂学家 @ 2021-03-15 21:02:03