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

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中调用函数时:
    switch(keynumber)
    {
    case 119: //w
        up(base);
        break;

我刚结束我的程序崩溃。
我这样做的原因是我想在控制台上进行2048游戏,所以首先我创建了一个数组,该数组的2个随机元素将是数字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;
                 }
            }
}

当第二个循环中断时?

关于c - 比较数组中的元素时我的程序崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40679424/

10-09 08:43