求单偶阶幻方c语言代码
时间: 2023-07-31 10:09:39 浏览: 52
以下是一个求解单偶阶幻方的 C 语言程序:
```c
#include <stdio.h>
void magicSquare(int n)
{
int square[n][n];
int i, j, k;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
square[i][j] = 0;
}
}
i = n / 2;
j = n - 1;
for (k = 1; k <= n * n; k++) {
if (i == -1 && j == n) {
j = n - 2;
i = 0;
} else {
if (j == n) {
j = 0;
}
if (i < 0) {
i = n - 1;
}
}
if (square[i][j]) {
j -= 2;
i++;
continue;
} else {
square[i][j] = k;
}
j++;
i--;
}
printf("The Magic Square for n=%d:\nSum of each row or column %d:\n\n", n, n * (n * n + 1) / 2);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%3d ", square[i][j]);
}
printf("\n");
}
}
int main()
{
int n;
printf("Enter the size of Magic Square (odd number): ");
scanf("%d", &n);
if (n % 2 == 0) {
printf("Magic Square is not possible for even number.\n");
return 0;
}
magicSquare(n);
return 0;
}
```
该程序首先判断输入的数是否为奇数,然后创建一个二维数组来存储幻方。接下来,程序使用一个算法来填充幻方。最后,程序输出完整的幻方。