C++编写程序幻方是一个很神奇的NN矩阵,它的每行、每列、每个对角线,加起来的数字和都相等,都等于n(n^2 + 1) / 2。例如3*3幻方:
时间: 2024-02-13 20:07:38 浏览: 46
好的,以下是一个简单的C++程序,可以生成任意大小的幻方:
```
#include <iostream>
#include <vector>
using namespace std;
void magicSquare(int n) {
vector<vector<int>> square(n, vector<int>(n, 0)); // 生成一个n x n的二维数组,初始值全部为0
int x = n / 2, y = n - 1; // 初始化第一个数字的位置
for (int i = 1; i <= n * n; i++) {
square[x][y] = i;
int next_x = (x - 1 + n) % n, next_y = (y + 1) % n; // 计算下一个数字的位置
if (square[next_x][next_y] != 0) { // 如果下一个位置已经有数字了,改为向下放一个数字
y = (y - 1 + n) % n;
} else {
x = next_x;
y = next_y;
}
}
// 输出幻方
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << square[i][j] << " ";
}
cout << endl;
}
}
int main() {
int n;
cout << "请输入幻方的大小:";
cin >> n;
if (n % 2 == 0) {
cout << "幻方的大小必须是奇数!" << endl;
} else {
magicSquare(n);
}
return 0;
}
```
这个程序会先通过vector生成一个n x n的二维数组,然后从第一个数字开始,按照一定规律依次填充每一个数字。最后输出生成的幻方。