用c语言:阶幻方:所谓N阶幻方是指由1至N*N连续自然数组成的方阵,它的每一行、每一列和对角线之和均相等。 例如,7阶魔方阵为: 30 39 48 1 10 19 28 38 47 7 9 18 27 29 46 6 8 17 26 35 37 5 14 16 25 34 36 45 13 15 24 33 42 44 4 21 23 32 41 43 3 12 22 31 40 49 2 11 20 N为奇数时,N幻方构造算法为: ⑴将1放在第一行中间一列; ⑵从2开始直到n×n为止各数依次按下列规则存放:按45°方向向右上行走,每一个数存放的行比前一个数的行数减1,列数加1。 ⑶如果行列范围超出矩阵范围,则回绕。 ⑷如果按上面规则确定的位置上已有数,则把下一个数放在上一个数的下面。 编程输出N阶幻方。 输入格式: 一个正奇数N,(0<N<20)。 输出格式: 输出N阶幻方,每个整数占5列。 输入样例: 7 输出样例: 30 39 48 1 10 19 28 38 47 7 9 18 27 29 46 6 8 17 26 35 37 5 14 16 25 34 36 45 13 15 24 33 42 44 4 21 23 32 41 43 3 12 22 31 40 49 2 11 20 输入样例: 3 输出样例: 8 1 6 3 5 7 4 9 2
时间: 2023-06-12 10:05:00 浏览: 147
用c语言编写的n阶幻方
```c
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int a[n][n];
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
a[i][j] = 0;
}
}
int x = 0, y = n / 2;
for (i = 1; i <= n * n; i++) {
a[x][y] = i;
x--;
y++;
if (x < 0 && y >= n) {
x += 2;
y--;
} else if (x < 0) {
x = n - 1;
} else if (y >= n) {
y = 0;
} else if (a[x][y] != 0) {
x += 2;
y--;
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%5d", a[i][j]);
}
printf("\n");
}
return 0;
}
```
阅读全文