【发布时间】:2015-09-02 04:49:51
【问题描述】:
我正在学习 C,我的老师要求我的班级制作一个井字游戏。我设法充分利用了它,但我有点卡住了。我制作了一个函数,目的是逐行检查,如果发现所有行号都等于 1 或 2,则游戏循环接收胜利编号并停止。但是我在函数内部对if 设置的条件似乎有问题,我无法弄清楚它是什么。即使一行包含一个数字,它也不会将数字返回到游戏循环中。我尝试搜索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;
}
【问题讨论】:
-
您可以简化行中所有元素相等的测试,然后返回行元素之一:
if( mat[i][0] == mat[i][1] == mat[i][2] ) { victory = mat[i][0] },而不是测试每一行的 1,然后是 2。那么else ifblock 是多余的(也许可以用于列和对角线测试)。
标签: c loops if-statement conditional-statements