KinoluKaslana 2016-10-06 11:18 采纳率: 50%
浏览 925
已采纳

数组魔方阵最后一点点出了个小BUG求找啊~~~

#include
#define N 3
int main()
{
int a[N][N];
int s, d, x, i, j,x1,x2;
s = 0;
d =(int)(N / 2);
for (i = 0;i <= N - 1;i++)
for (j = 0;j <= N - 1;j++)
a[i][j] = 0;
for (i = 1;i <= N*N;i++)
{
if (i == 1)
{
a[s][d] = i;
continue;
}
x = 2;
while (x==2)
{
if ((s == 0) && (d == N - 1))
{
s = N - 1;
d = 0;
x = 1;
}
else x = 0;
if (d == N - 1)
{
d = 0;
s = s - 1;
x = 1;
}
else x1 = 0;
if (s == 0)
{
s = N - 1;
d = d + 1;
x = 1;
}
else x2 = 0;
}
while (x == 0&&x1==0&&x2==0)
{
s = s - 1;
d = d + 1;
if (a[s][d] > 0)
{
s = s + 2;
d = d - 1;
}
if (s == 0 && d == N - 1)
{
s = s + 2;
d = d - 1;
}
x = 1;
}
a[s][d] = i;
}
for (i = 0;i < N;i++)
{
for (j = 0;j < N;j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
return 0;
}
图片说明

  • 写回答

2条回答 默认 最新

  • 凝视深空 2016-10-06 12:16
    关注

    试着看了一下你的代码,跳转太多,逻辑不分明,实在是看不下去了。你还是看一下这个吧!
    #include
    #define N 20
    void main()
    {
    int a[N][N],n,i,j,k;
    while(1)
    {
    printf("请输入一个正整数n(n<=20,n为奇数):");
    scanf("%d",&n);
    if(n!=0&&n<=20&&n%2!=0)
    {
    printf("%d阶魔方阵.\n",n);
    break;
    }
    }
    for(i=0;i for(j=0;j a[i][j]=0;
    i=0;
    j=n/2;
    a[i][j]=1;
    k=2;
    while(k {
    i-=1;
    j+=1;
    if(in-1)
    {
    i+=2;
    j-=1;
    }
    else
    {
    if(i i=n-1;
    if(j>n-1)
    j=0;
    }
    if(a[i][j]==0)
    a[i][j]=k;
    else
    {
    i+=2;
    j-=1;
    a[i][j]=k;
    }
    k++;
    }
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    printf("%4d",a[i][j]);
    printf("\n");
    }
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?