按自己想法写了个输出魔方数的。可是只能对付3阶的。。求指教。。
所谓魔方数 就是横竖斜加起来和相等。。 我的代码是这样的、
#include <stdio.h>
int main(void)
{
int a[16][16]={0},i=0,j,e=1,s,n;
printf("请输入n的值(1~15):");
scanf("%d",&n);
j=n/2;
a[i][j]=e;
for(s=1;s<=n*n-1;s++)
{
i--;j++;e++;
if(i<0) i=n-1;
if(j>n-1) j=0;
{if(a[i][j]!=0)
if(i==n-1&&j==0) {i=1;j=n-1;}
else {i+=2;j--;}
if(i>n-1) i=i-n+1;
if(j<0) j=-j;}
a[i][j]=e;
}
for(i=0;i<=n-1;i++)
{{for(j=0;j<=n-1;j++)
printf("%6d",a[i][j]);}
putchar('\n');
}
return 0;
}
对于输入n=3没有问题, n=6的时候就有问题了,12和13不见了,我脑中按步骤算了下发现没问题啊, 为什么就变成其他数了。。。
求解。。。。。。完全凌乱了