发布网友 发布时间:2022-05-27 16:43
共2个回答
热心网友 时间:2023-11-04 12:45
我只想说你的算法错了,你还是去查一查魔方阵的算法吧;下面是n阶奇数魔方阵的程序,你好好看看吧:
# include <stdio.h>
void main()
{
int array[16][16];
int i, j, k, m, n;
/* 变量初始化 */
m = 1;
while(m == 1)
{
printf("请输入n(0<n<=15),n是奇数)\n");
scanf("%d", &n);
/* 判断n是否是大于0小于等于15的奇数 */
if((n!=0) && (n<=15) && (n%2!=0))
{
printf("矩阵阶数是 %d\n", n);
m = 0;
}
}
/* 数组赋初值为0 */
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
array[i][j] = 0;
/* 建立魔方阵 */
j = n/2 + 1;
array[1][j] = 1;
for(k=2; k<=n*n; k++)
{
i = i - 1;
j = j + 1;
if((i<1) && (j>n))
{
i = i + 2;
j = j - 1;
}
else
{
if(i < 1)
i = n;
if(j > n)
j = 1;
}
if(array[i][j] == 0)
array[i][j] = k;
else
{
i = i + 2;
j = j - 1;
array[i][j] = k;
}
}
/* 输出魔方阵 */
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
printf("%5d", array[i][j]);
printf("\n");
}
}
输入3所得到的三阶魔方阵为:
热心网友 时间:2023-11-04 12:45
三阶魔方阵。用三维数组才行。你这一维怎么输出啊?