我在学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
。