gpt4 book ai didi

c - 井字棋在比较数据时出现 C 错误

转载 作者:太空宇宙 更新时间:2023-11-04 04:30:29 24 4
gpt4 key购买 nike

当我运行我的程序时,else-if 函数中的 if 语句会针对用户的任何输入执行。当我在插槽 [0][0] 中输入“x”时,玩家 1 获胜 :(,我什至做了尝试 board[0][0]!=' ' 它没有用。在 if 函数中,我比较了电路板的对角线输入以及电路板的水平和垂直输入,但我不确定错误是什么。

#include<stdio.h>
int main()
{
char xo = 0,board[3][3]={
{' ',' ',' '},
{' ',' ',' '},
{' ',' ',' '},
};
int row,col,i,win=0,player=0;

for(i=0; i<9;i++)
{
printf(" 1 2 3\n");
printf("1| %c | %c | %c |\n",board[0][0],board[0][1],board[0][2]);
printf("2| %c | %c | %c |\n",board[1][0],board[1][1],board[1][2]);
printf("3| %c | %c | %c |\n",board[2][0],board[2][1],board[2][2]);

player = player%2+1;

jump:
printf("Enter 'x' , 'o' or 'q'(to quit): ");
scanf(" %c", &xo);

if( xo == 'q' || xo == 'Q')
{
printf("Thank you for playing!!\n");
return 0;
}
else if( xo =='X' || xo =='x'||xo == 'o'||xo == 'O')
{
printf("Enter row: ");
scanf("%i",&row);
printf("Enter column: ");
scanf("%i",&col);

board[row-1][col-1] = xo;
/*these functions and statements dont work according to my inputs*/
if((board[0][0]==board[1][1] && board[1][1]==board[2][2])
||(board[0][2]==board[1][1]&&board[1][1]==board[2][0]))
{
printf("Player %i wins\n\n",player);
printf(" 1 2 3\n");
printf("1| %c | %c | %c |\n",board[0][0],board[0][1],board[0][2]);
printf("2| %c | %c | %c |\n",board[1][0],board[1][1],board[1][2]);
printf("3| %c | %c | %c |\n",board[2][0],board[2][1],board[2][2]);
}
else
{
for(i=0;i<3;i++)
{
if((board[0][i]==board[1][i] && board[1][i]==board[2][i])||
(board[i][0]==board[i][1] && board[i][1]==board[i][2]))
{
printf("Player %i wins\n\n",player);
printf(" 1 2 3\n");
printf("1| %c | %c | %c |\n",board[0][0],board[0][1],board[0][2]);
printf("2| %c | %c | %c |\n",board[1][0],board[1][1],board[1][2]);
printf("3| %c | %c | %c |\n",board[2][0],board[2][1],board[2][2]);
}
}
}
}
else
{
printf("Invalid input!!! Please re-enter,\n");
goto jump;
}
}

return 0;
}

最佳答案

||(board[0][2]==board[1][1]&&board[1][1]==board[2][0]))

即使没有人在这些单元格内输入十字或圆圈,这条线也是正确的,因为

' ' == ' ' == ' '

改为尝试使用 ai 字符初始化单元格,如

char board[3][3] = {
{'a', 'b', 'c'},
{'d', 'e', 'f'},
{'g', 'h', 'i'}
};

所以当 if 语句运行时,

'c' != 'e' != 'g'

关于c - 井字棋在比较数据时出现 C 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36820069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com