在C语言中编写一个魔方阵需要遵循以下步骤:
以下是一个简单的示例代码:
#include <stdio.h>
#include <stdlib.h>
void print_magic_square(int n) {
int magic_square[n][n];
// 初始化魔方阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
magic_square[i][j] = 0;
}
}
// 生成魔方阵
int row = n / 2;
int col = n - 1;
int num = 1;
while (num <= n * n) {
if (row < 0 || row >= n || col < 0 || col >= n || magic_square[row][col] != 0) {
// 如果当前位置无效,则向上移动一行
row--;
} else {
// 将数字放置在正确的位置
magic_square[row][col] = num++;
}
// 向右移动一列
col--;
// 如果已经到达第一行,则向下移动一行
if (col < 0) {
col = n - 1;
row++;
}
}
// 输出魔方阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", magic_square[i][j]);
}
printf("\n");
}
}
int main() {
int n;
printf("请输入魔方阵的大小(奇数):");
scanf("%d", &n);
if (n % 2 == 0) {
printf("魔方阵的大小必须是奇数。\n");
return 1;
}
print_magic_square(n);
return 0;
}
在这个示例中,print_magic_square
函数用于生成并输出指定大小的魔方阵。主函数main
负责接收用户输入的魔方阵大小,并调用print_magic_square
函数进行输出。注意,这个示例仅适用于奇数大小的魔方阵。如果需要生成偶数大小的魔方阵,需要进行相应的调整。