int main (void)
{
char tttarray[3][3] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
int turn = 0,i,j,loc;
char XO;
while(turn<=9)
{
printf("Enter (x) or (o): ");
scanf("%c",&XO);
getchar();
printf("Enter number: ");
scanf("%d", &loc);
j = (loc - 1)%3;
i = (loc - 1)/3;
if(tttarray[i][j] == 'x' || 'o')
{
return(0);
printf("That spot has been taken!\n");
}
tttarray[i][j] = XO;
printArray(tttarray);
}
}
我只是为了方便而显示主要代码。我的问题在于这一部分:
if(tttarray[i][j] == 'x' || 'o')
{
return(0);
printf("That spot has been taken!\n");
}
这是因为它似乎总是如此,这阻止了玩家在那里放置'x'
或'o'
。我在上面的代码中遗漏了什么吗?如何防止用户进入占用空间?
答案 0 :(得分:4)
你不能像你那样链接逻辑OR运算符。你需要改变
if(tttarray[i][j] == 'x' || 'o')
到
if((tttarray[i][j] == 'x') || (tttarray[i][j] =='o'))
那就是说,return
陈述后的陈述没有任何意义。控件永远不会到达printf()
条件中的if
。也许你想要的是使用
printf()
声明continue;
。