魔方阵的代码 哪里有问题
求助魔方阵的代码哪里出现问题了,要求魔方阵的每一行和每一列和对角线之和都一样,红宝书第六zhang kehouxiti#include <stdio.h>
#include <math.h>
int main(void)
{int a,i,j,k,p,n;
p=1;
while (p)
{
scanf("%d",&n);
if ((n<=15)&&(n%2!=0))
{
for (i = 1;i<=15;i++)
for (j= 1;i<=15;i++)
{
a = 0;
}
j = n/2+1;
i = 1;
a=1;
for (k=2;k<=n*n;k++)
{
i = i - 1;
j = j + 1;
if (i<1)
{
i = n;
}
if (j>n)
{
j=1;
}
if ((a>0) || (i<1 && j>n))
{
i = i + 2;
j = j - 1;
}
a = k;
}
for (i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%10d",a);
printf("\n");
}
break;}
else
{
printf("请重新输入1-15以内的奇数");
}
}
return 0;
} 解决了 两个问题第一个是最开始15方阵忘了都赋值0,第二个就是if else逻辑上有一些问题,调整了下顺序就好了,代码如下:
#include <stdio.h>
#include <math.h>
int main(void)
{
int a={0},i,j,k,p,n;
p=1;
while (p)
{ printf("请输入1-15以内的奇数");
scanf("%d",&n);
if ((n<=15)&&(n%2!=0)) p = 0;
}
for (i = 1;i<=n;i++)
for (j= 1;i<=n;i++)
{
a = 0;
}
j = n/2+1;
i = 1;
a=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 (a == 0)
a = k;
else
{
i = i + 2;
j = j - 1;
a = k;
}
}
for (i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%4d",a);
}
printf("\n");
}
return 0;
}
页:
[1]