翻译#include <iostream> #include <iomanip> using namespace std; int main() { const int N = 5; int a[N][N] = {0}; int x=0, y=N/2; a[x][y] = 1; for(int num=2; num<=N*N; num++) { int nx = (x+N-1)%N, ny = (y+1)%N; if ((x==0 && y==N-1) || a[nx][ny] > 0) { nx = (x+1)%N; ny = y; } a[nx][ny] = num; x = nx; y = ny; } for(int i=0; i<N; i++) { for(int j=0; j<N; j++) cout <<setw(2)<< a[i][j] << " "; cout << endl; } return 0; }
时间: 2024-03-04 13:51:00 浏览: 33
使用include <iostream>时一定要加using namespace std
这段代码是一个输出魔方阵的程序,使用了二维数组来存储魔方阵,并且通过循环来实现魔方阵的填充。其中,N是魔方阵的阶数,a数组用来存储魔方阵,x和y是当前填充位置的坐标,num表示当前填充的数值。程序中的算法是通过每次将当前位置的左上方填充下一个数,如果该位置已经被填充过或者位于右上角,则将当前位置下移一行,否则将当前位置右上移动。最后,程序通过循环输出二维数组中的数值,以得到完整的魔方阵。
阅读全文