gpt4 book ai didi

c - 打破 while 循环

转载 作者:行者123 更新时间:2023-11-30 21:07:29 29 4
gpt4 key购买 nike

这是主函数,其中还调用了 9 个函数。我将向您展示另一个函数,以便您了解我的目标是什么。

int main() {
char B[rows][columns];
char answer;
int newgame;
printf("Are you ready to play? Answer with y (or Y) for yes or n (or N) for no\n");
scanf("\n%c",&answer);
while(answer!='N' && answer!='n'){
fillArray(B);
printArray(B);
answer='y';
while(answer!='N' && answer!='n'){
vasilhs(B);
printArray(B);
check_draw(B);//I will place an if statement after the check_draw function
check_vertical_win(B);
check_horizontal_win(B);
check_right_diagonal_win(B);
check_left_diagonal_win(B);
antipalos_paikths(B);
printArray(B);
check_draw(B);
check_vertical_win(B);
check_horizontal_win(B);
check_right_diagonal_win(B);
check_left_diagonal_win(B);
}
printf("Do you want to play again?\n");
scanf("\n\n%c",&answer);
}
}//end of main function
//function check_draw

void check_draw(char A[rows][columns]){
int i,j;
int newgame;
//if statement will check in an matrix if the following elements are equal to '-'
if(A[0][0]!='-' && A[0][1]!='-' && A[0][2]!='-' && A[0][3]!='-' && A[0][4]!='-' && A[0][5]!='-' && A[0][6]!='-'){
printf("The result is a draw");
newgame=10;
}
}

因此,当函数 check_draw 中的 if 语句为 True 时,变量 newgame 的值为 10。

if(newgame==10){
break;
}

为什么,当我在 check_draw 调用之后放置此 if 语句时,它不会破坏 while 循环吗?

最佳答案

来自您的代码实现:

void check_draw(char A[rows][columns]){
int i, j;
int newgame;
//if statement will check in an matrix if the following elements are equal to '-'
if (A[0][0] != '-' && A[0][1] != '-' && A[0][2] != '-' && A[0][3] != '-' && A[0][4] != '-' && A[0][5] != '-' && A[0][6] != '-'){
printf("The result is a draw");
newgame = 10;
}
}

int newgame这是 check_draw 的本地副本功能。

如果另一个同名变量作为全局变量存在,则不应声明 int newgame check_draw内功能。它将制作一个本地副本以供使用。

建议:

int newgame;// Write it outside main
void check_draw(char A[rows][columns]){
int i, j;
//if statement will check in an matrix if the following elements are equal to '-'
if (A[0][0] != '-' && A[0][1] != '-' && A[0][2] != '-' && A[0][3] != '-' && A[0][4] != '-' && A[0][5] != '-' && A[0][6] != '-'){
printf("The result is a draw");
newgame = 10;
}
}

如果你写int newgame;在 main 之外并且不在 check_draw 内制作任何本地副本然后函数 newgame = 10; check_draw 内的声明函数将改变全局 newgame 的值.

关于c - 打破 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43541826/

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