用c编写一个可以打印n阶幻方的代码
时间: 2024-05-05 16:20:05 浏览: 40
好的,下面是一个简单的 C 代码实现:
```c
#include <stdio.h>
void generate_magic_square(int n) {
int magic_square[n][n];
int i, j, k, p;
// 初始化幻方数组为 0
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
magic_square[i][j] = 0;
}
}
// 填充幻方
j = (n - 1) / 2;
i = 0;
magic_square[i][j] = 1;
for (k = 2; k <= n * n; k++) {
p = (i - 1 + n) % n;
if (magic_square[p][(j + 1) % n] == 0) {
i = p;
j = (j + 1) % n;
} else {
i = (i + 1) % n;
}
magic_square[i][j] = k;
}
// 打印幻方
printf("Magic Square of order %d:\n", n);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%3d ", magic_square[i][j]);
}
printf("\n");
}
}
int main() {
int n;
printf("Please enter the order of magic square: ");
scanf("%d", &n);
generate_magic_square(n);
return 0;
}
```
这个代码根据输入的 `n`,生成一个 `n` 阶幻方,并进行打印输出。
阅读全文