生成n阶魔方(也称为魔方阵)的步骤如下:
初始化:
创建一个n*n的二维数组,并将所有元素初始化为0。
放置初始数字:
将数字1放置在第一行的中间位置。
填充后续数字:
按照特定的规则填充后续数字,确保每行、每列以及对角线上的数字之和相等。
Java
```java
package chuanshu;
import java.util.Scanner;
public class mofang {
public static void nmofang(int n) {
int[][] a = new int[n][n];
int i = 0, j = n / 2;
for (int k = 1; k <= n * n; k++) {
a[i][j] = k;
if (k % n == 0) {
i = (i + 1) % n;
} else {
i = (i - 1 + n) % n;
j = (j + 1) % n;
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
System.out.print(a[i][j] + "\t");
}
System.out.println();
}
}
public static void main(String[] args) {
System.out.println("请输入要生成的魔方阶数:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
nmofang(n);
}
}
```
Python
```python
def print_magic_square(n):
magic_square = [ * n for _ in range(n)]
row, col = 0, n // 2
for num in range(1, n * n + 1):
magic_square[row][col] = num
if num % n == 0:
row = (row + 1) % n
else:
row = (row - 1 + n) % n
col = (col + 1) % n
for row in magic_square:
print(" ".join(str(num) for num in row))
n = int(input("请输入要生成的魔方阶数: "))
print_magic_square(n)
```
C++
```cpp
include include void print_magic_square(int n) { std::vector int row = 0, col = n / 2; for (int num = 1; num <= n * n; ++num) { magic_square[row][col] = num; if (num % n == 0) { row = (row + 1) % n; } else { row = (row - 1 + n) % n; col = (col + 1) % n; } } for (const auto& row : magic_square) { for (int num : row) { std::cout << num << " "; } std::cout << std::endl; } } int main() { int n; std::cout << "请输入要生成的魔方阶数: "; std::cin >> n; print_magic_square(n); return 0; } ``` C