我在学C,我的老师让我的班级做一个游戏。我尽力了,但我有点卡住了。我做了一个函数,目的是逐个检查行,如果它发现所有行号都等于1或2,游戏循环将接收胜利号并停止。但我在函数内部设置的条件似乎有问题,我无法确定它是什么。它不会返回一个数字到游戏循环,即使一行是一个数字完成。我试图搜索if条件,但找不到错误。
功能如下:

int checkLines (int mat [3][3])
        {

            int i;
            int victory;

            for (i=0; i<3; i++)
            {
                      if ((mat [i][0] ==1) && (mat [i][1] ==1) && (mat [i][2] ==1))
                      {
                                 victory = 1;

                      } else if ((mat [i][0]==2) && (mat [i][1]==2) && (mat [i][2]==2))
                      {
                                 victory = 2;

                      }else
                      {
                           victory = 0;
                      }

            }
        return victory;
        }

最佳答案

这是因为一旦设置了break,循环就不会退出,这意味着循环将继续,然后在victory部分将victory重置为零。
实际上,与其设置else并跳出循环,不如直接victory,在循环之后,你知道你没有“胜利”,因此你可以始终返回return

10-06 07:36