我只想说你的算法错了,你还是去查一查魔方阵的算法吧;下面是n阶奇数魔方阵的程序,你好好看看吧:
#include
voidmain()
{
intarray[16][16];
inti,j,k,m,n;
/*变量初始化*/
m=1;
while(m==1)
{
printf("请输入n(0
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
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所得到的三阶魔方阵为: