KinoluKaslana
2016-10-06 05:25
采纳率: 50%
浏览 1.1k
已采纳

C语言数组输出魔方阵的时候我怎么无法得到结果?

内容:
#include
int main()
{
int a[3][3];
int q, i, w, e, t;
q = (int)(3 / 2);
for (i = 0;i < 3;i++)
{
for (t = 0;t < 3;t++)
{
a[i][t] = 0;
}
}
for (i = 1;i <= (3*3);i++)
{
if (i = 1)
{
e = q;
w = 0;
a[w][e] = i;
w = 2;
e = e + 1;
a[w][e] = i, ++i;
continue;
}
if ((w == 0)&&(a[w][e] == 0))
{
if (e == 2)
{
w = 2;
e = 0;
a[w][e] = i;
}
else
{
w = 2;
e = e + 1;
a[w][e] = i;
}
continue;
}
if(a[w][e] == 0)
{
if(e==2)
{
w = 2;
e = 0;
a[w][e] = i;
}
else
{
w = 2;
e = e + 1;
a[w][e] = i;
}
continue;
}
if(a[w][e]!=0||(w==0&&e==2))
{
w = w + 1;
a[w][e] = i;
continue;
}
}

for (i = 0;i < 3;i++)
{
for (w = 0;w < 3;w++)
{
printf("%d\t", a[i][w]);
}
printf("\n");
}
return 0;
}
运行后没任何显示

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • Crazy_Plus 2016-10-06 06:02
    已采纳

    for (i = 1; i <= (3 * 3); i++)
    {
    if (i == 1)
    {
    e = q;
    w = 0;
    a[w][e] = i;
    w = 2;
    e = e + 1;
    a[w][e] = i, ++i;
    continue;
    }
    ...
    }
    你这段写的是if(i=1),造成死循环后面的代码得不到执行。

    点赞 评论
  • KinoluKaslana 2016-10-06 12:31

    中间从改为:

    while (x==2)
    {
    if (s == 0 && d == N - 1)
    {

    s = s + 1;
    x = 1;
    }
    else
    {
    x = 0;
    if (d == N - 1 && s != 0)
    {
    d = 0;
    s = s - 1;
    x = 1;
    }
    else
    {
    x1 = 0;
    if (s == 0 && d != N - 1)
    {
    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;
    }
    x = 1;
    }
    a[s][d] = i;
    }
    就可以了,谢谢各位的解答,我是才学了不久的,有什么宝贵的建议希望大家可以私信给我!

    点赞 评论

相关推荐 更多相似问题