在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) {
// 如果當(dāng)前位置無效,則向上移動一行
row--;
} else {
// 將數(shù)字放置在正確的位置
magic_square[row][col] = num++;
}
// 向右移動一列
col--;
// 如果已經(jīng)到達第一行,則向下移動一行
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("請輸入魔方陣的大小(奇數(shù)):");
scanf("%d", &n);
if (n % 2 == 0) {
printf("魔方陣的大小必須是奇數(shù)。\n");
return 1;
}
print_magic_square(n);
return 0;
}
在這個示例中,print_magic_square
函數(shù)用于生成并輸出指定大小的魔方陣。主函數(shù)main
負責(zé)接收用戶輸入的魔方陣大小,并調(diào)用print_magic_square
函數(shù)進行輸出。注意,這個示例僅適用于奇數(shù)大小的魔方陣。如果需要生成偶數(shù)大小的魔方陣,需要進行相應(yīng)的調(diào)整。