您的位置:首页 > 其它

魔方阵

2015-12-01 16:52 134 查看
魔方阵,它的每一行,每一列以及对角线上的各数之和为一个相同的常数。

这里只考虑了奇次阶魔方阵,数组下标是从1~n。

#include<stdio.h>
int main()
{
int i, j, i1, j1, x, n, a[100][100];
printf("input an odd number:");
scanf("%d", &n);
if (n % 2 == 0)
{
printf("input error!\n");
return 0;
}
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
a[i][j] = 0;

i = 1;
j = (int)(n+1)/ 2;
x = 1;
while (x <= n * n)
{
a[i][j] = x;
x = x + 1;
i1 = i;
j1 = j;
i = i -1;
j = j - 1;
if (i == 0) i = n;
if (j == 0) j = n;
if (a[i][j] != 0)
{
i = i1 + 1;
j = j1;
}
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
printf("%5d", a[i][j]);
printf("\n");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: