gpt4 book ai didi

c - 一旦 3x3 井字棋盘中的每一行和每一列都填满了 X 和 O,如何结束循环?

转载 作者:行者123 更新时间:2023-11-30 16:15:46 24 4
gpt4 key购买 nike

因此,我要求用户在 tic tac toe 棋盘完全填满 X 和 O 后输入 X 和 O,我希望程序结束,而不是在填满棋盘后继续要求将值输入到棋盘中。所以我创建了一个整数变量 count 并将其设置为 0。每次要求两个玩家输入 X 或 O 后,我希望它每轮递增,一旦 count 等于 10,我希望整个它爆发do while 循环并结束函数。但这似乎不起作用,并不断要求用户输入 X 和 O。任何建议都会有帮助,谢谢。

void CreateBoard(int m, int n, char board[][n])
{
int i, j, position;
int count = 0;
do {
SCAN:
printf("Enter the number of the cell you want to insert X or O or enter -1 to exit: \n");
scanf("%d", &position);

if(position < 0){
break;
}
if(position > 9){
goto SCAN;
}

printf("Type X or O: \n");

switch(position)
{
case 1: scanf(" %c", &board[0][0]); break;
case 2: scanf(" %c", &board[0][1]); break;
case 3: scanf(" %c", &board[0][2]); break;
case 4: scanf(" %c", &board[1][0]); break;
case 5: scanf(" %c", &board[1][1]); break;
case 6: scanf(" %c", &board[1][2]); break;
case 7: scanf(" %c", &board[2][0]); break;
case 8: scanf(" %c", &board[2][1]); break;
case 9: scanf(" %c", &board[2][2]); break;
}

for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
printf("%c ", board[i][j]);
if (j != 2)
printf(" | ");
}
if (i != 2)
printf("\n------------");
printf("\n");
}

count++;

if(count == 10){
break;
}
}while(position != -1);

}

最佳答案

您遇到了差一问题。

让我们进行桌面检查:

do block 开始时,count是0。在 block 结束时,它是1。1 == 10是吗?没有。下一步。

count是1。最后是2。2 == 10是吗?没有。下一步。

count 是 2。最后是 3。3 == 10 是吗?没有。下一步。

等等。直到:

count 是 9。最后是 10。10 == 10 是吗?是的。出。

让我们数一下您进入方 block 的次数:0、1、2、3、4、5、6、7、8、9。是 10。

所以,10 太多了。你知道修复方法。

关于c - 一旦 3x3 井字棋盘中的每一行和每一列都填满了 X 和 O,如何结束循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56979957/

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