C语言 输出n阶魔方阵
输出“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均
相等。例如,三阶魔方阵为
8 1 6
3 5 7
4 9 2
要求输出1~n^2的自然数构成的魔方阵。
#include <stdio.h>void generateMagicSquare(int n) {int magicSquare[n][n];// 初始化矩阵for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {magicSquare[i][j] = 0;}}int num = 1;int i = 0, j = n / 2;while (num <= n * n) {magicSquare[i][j] = num++;int newi = (i - 1 + n) % n;int newj = (j + 1) % n;if (magicSquare[newi][newj] != 0) {i = (i + 1) % n;} else {i = newi;j = newj;}}printf("%d阶魔方阵:\n", n);for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {printf("%3d ", magicSquare[i][j]);}printf("\n");}
}int main() {int n;printf("输入魔方阵的阶数:");scanf("%d", &n);if (n % 2 == 0) {printf("阶数必须为奇数!\n");} else {generateMagicSquare(n);}return 0;
}
代码说明:
- 生成一个n阶(奇数)的魔方阵。
- 按照特定规则填充矩阵:从第一行中间开始,按对角线方向填充数字,如果位置已被占用,则向下移动。
- 最后输出生成的魔方阵。