比较数组

时间:2016-11-18 14:23:58

标签: c arrays function crash

嗨,我需要帮助我的程序。部分代码似乎没有按预期工作:

void up(int pole[4][4])
{

int i,j;

for (i = 3; i >= 1; i--)
{
    for (j = 3; j >= 0; i--)
    {
        if (pole[i][j] == pole[i-1][j])
        {
            pole[i-1][j] += pole[i][j];
            pole[i][j] = 0;
        }
    }
}

system("cls");

for (i = 0; i < 4; i++)
{
    for(j = 0; j < 4; j++)
    {
        printf("%d ", pole[i][j]);
    }
    printf("\n");
}
} 

当我在这样的开关中调用该函数时:

    switch(keynumber)
    {
    case 119: //w
        up(base);
        break;    

我最终导致程序崩溃。 我这样做的原因是我想在控制台中制作2048游戏,所以首先我创建了一个数组,其中数组的2个随机元素将是数字2,然后根据你将推送的键来比较这些元素。

2 个答案:

答案 0 :(得分:2)

for (i = 3; i >= 1; i--)
{
       for (j = 3; j >= 0; i--)  // Why here is i-- ?? instead if j-- 
           {
              if (pole[i][j] == pole[i-1][j])
                {
                 pole[i-1][j] += pole[i][j];
                 pole[i][j] = 0;
                 }
            }
}

当第二个循环中断时?

答案 1 :(得分:0)

参考第8行, 而不是

    for (j = 3; j >= 0; i--)

应该是

    for (j = 3; j >= 0; j--)

当j的值没有递减时,它是一个无限循环。