Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 蒂克塔克托印刷奖得主_C_Arrays_String_Printf_Tic Tac Toe - Fatal编程技术网

C 蒂克塔克托印刷奖得主

C 蒂克塔克托印刷奖得主,c,arrays,string,printf,tic-tac-toe,C,Arrays,String,Printf,Tic Tac Toe,我想和两个玩家玩一个井字游戏。我离得相当远,而且它在很大程度上起作用。我不知道如何打印存储在数组中的字符串。我见过很多循环作为例子。请告诉我发生了什么事 在这里输入代码 int main() { time_t t; char player1 [23]; char player2 [23]; int Let; int Turns = 0; printf("\n Welcome to Galactic Tic Tac Toe:\n"); printf("\n Plea

我想和两个玩家玩一个井字游戏。我离得相当远,而且它在很大程度上起作用。我不知道如何打印存储在数组中的字符串。我见过很多循环作为例子。请告诉我发生了什么事

在这里输入代码

    int main()
   {    time_t t;
char player1 [23];
char  player2 [23];
int Let;
int Turns = 0;

printf("\n Welcome to Galactic Tic Tac Toe:\n");
    printf("\n Please enter player 1's name");
    fgets(player1, 22, stdin);
    printf("\nPlayer 2's name?\n");
    fgets(player2, 22, stdin);

void winner (char board [][9], char player1 [][23], char player2 [][23]){
if (board [0][0] && board [0][1] && board [0][2] == 'X'){printf("\nPlayer 1 has won\n Congratulations : %s ", player1);}
if (board [0][3] && board [0][4] && board [0][5] == 'X'){printf("\nPlayer 1 has won\n Congratulations : %s ", player1);}
if (board [0][6] && board [0][7] && board [0][8] == 'X'){printf("\nPlayer 1 has won\n Congratulations : %s ", player1);}
if (board [0][0] && board [0][1] && board [0][2] == 'O'){printf("\nPlayer 2 has won\n Congratulations : %s ", player2);}
if (board [0][3] && board [0][4] && board [0][5] == 'O'){printf("\nPlayer 2 has won\n Congratulations : %s ", player2);}
if (board [0][6] && board [0][7] && board [0][8] == 'O'){printf("\nPlayer 2 has won\n Congratulations : %s ", player2);}
if (board [0][0] && board [0][5] && board [0][8] == 'X'){printf("\nPlayer 1 has won\n Congratulations : %s ", player1);}    
if (board [0][2] && board [0][5] && board [0][7] == 'X'){printf("\nPlayer 1 has won\n Congratulations : %s ", player1);}
if (board [0][0] && board [0][5] && board [0][8] == 'O'){printf("\nPlayer 1 has won\n Congratulations : %s ", player2);}
if (board [0][2] && board [0][5] && board [0][7] == 'O'){printf("\nPlayer 1 has won\n Congratulations : %s ", player2);}

}
你最大的问题是:

if (board [0][0] && board [0][1] && board [0][2] == 'X')
这和你想象的不一样。您可能会假设这会检查这三个空格是否都用
'X'
标记。这是不正确的

&&
是一个布尔AND运算符,这意味着左侧和右侧运算符(独立地)作为布尔运算符进行计算。所以你写的意思是:

if (                     // if
   board[0][0]           // board[0][0] is non-zero 
   &&                    // and
   board[0][1]           // board[0][1] is non-zero
   &&                    // and
   board[0][2] == 'X'    // board[0][2] is equal to 'X'
)
您还没有显示如何初始化电路板(可能是使用空格
'
),但是存储在那里的任何(可打印)字符都将被计算为布尔真

所以这个表达式应该是:


关于下一个问题:

if (board [0][0] && board [0][1] && board [0][2] == 'X')
老实说,我一直没有真正理解打印循环以及为什么它们通常用于阵列

其实根本就没有打印环。只有循环。如果愿意,可以在循环中调用
printf

为了理解为什么我们需要循环,考虑一个不同的TiC Tac趾板,其中板是100×100。那么你的“有人赢了吗?”逻辑是什么样的呢

很容易看出,编码
if(board[0][0]…board[99][99]
和所有可能的组合很快就会让人疲惫不堪。另一方面,计算机喜欢重复做相同(或类似)的任务。这取决于人(你)确保精力花在有用的东西上。

你最大的问题是:

if (board [0][0] && board [0][1] && board [0][2] == 'X')
这与您认为的不一样。您可能认为这会检查这三个空格是否都用
'X'
标记。这是不正确的

&&
是一个布尔AND运算符,这意味着左侧和右侧的运算符(独立地)作为布尔运算符进行计算。因此,您所写的内容意味着:

if (                     // if
   board[0][0]           // board[0][0] is non-zero 
   &&                    // and
   board[0][1]           // board[0][1] is non-zero
   &&                    // and
   board[0][2] == 'X'    // board[0][2] is equal to 'X'
)
您还没有显示如何初始化电路板(可能是使用空格
'
),但是存储在那里的任何(可打印)字符都将被计算为布尔真

所以这个表达式应该是:


关于下一个问题:

if (board [0][0] && board [0][1] && board [0][2] == 'X')
老实说,我一直没有真正理解打印循环以及为什么它们通常用于阵列

没有打印循环。只有循环。如果愿意,可以在循环中调用
printf

为了理解为什么我们需要循环,考虑一个不同的TiC Tac趾板,其中板是100×100。你的“某人赢了吗?”逻辑看起来像这样?

很容易看出,编码
if(board[0][0]…board[99][99]
和所有可能的组合很快就会让人疲惫不堪。另一方面,计算机喜欢重复做相同(或类似)的任务。这取决于人(你)确保精力花在有用的东西上。

你最大的问题是:

if (board [0][0] && board [0][1] && board [0][2] == 'X')
这与您认为的不一样。您可能认为这会检查这三个空格是否都用
'X'
标记。这是不正确的

&&
是一个布尔AND运算符,这意味着左侧和右侧的运算符(独立地)作为布尔运算符进行计算。因此,您所写的内容意味着:

if (                     // if
   board[0][0]           // board[0][0] is non-zero 
   &&                    // and
   board[0][1]           // board[0][1] is non-zero
   &&                    // and
   board[0][2] == 'X'    // board[0][2] is equal to 'X'
)
您还没有显示如何初始化电路板(可能是使用空格
'
),但是存储在那里的任何(可打印)字符都将被计算为布尔真

所以这个表达式应该是:


关于下一个问题:

if (board [0][0] && board [0][1] && board [0][2] == 'X')
老实说,我一直没有真正理解打印循环以及为什么它们通常用于阵列

没有打印循环。只有循环。如果愿意,可以在循环中调用
printf

为了理解为什么我们需要循环,考虑一个不同的TiC Tac趾板,其中板是100×100。你的“某人赢了吗?”逻辑看起来像这样?

很容易看出,编码
if(board[0][0]…board[99][99]
和所有可能的组合很快就会让人疲惫不堪。另一方面,计算机喜欢重复做相同(或类似)的任务。这取决于人(你)确保精力花在有用的东西上。

你最大的问题是:

if (board [0][0] && board [0][1] && board [0][2] == 'X')
这与您认为的不一样。您可能认为这会检查这三个空格是否都用
'X'
标记。这是不正确的

&&
是一个布尔AND运算符,这意味着左侧和右侧的运算符(独立地)作为布尔运算符进行计算。因此,您所写的内容意味着:

if (                     // if
   board[0][0]           // board[0][0] is non-zero 
   &&                    // and
   board[0][1]           // board[0][1] is non-zero
   &&                    // and
   board[0][2] == 'X'    // board[0][2] is equal to 'X'
)
您还没有显示如何初始化电路板(可能是使用空格
'
),但是存储在那里的任何(可打印)字符都将被计算为布尔真

所以这个表达式应该是:


关于下一个问题:

if (board [0][0] && board [0][1] && board [0][2] == 'X')
老实说,我一直没有真正理解打印循环以及为什么它们通常用于阵列

没有打印循环。只有循环。如果愿意,可以在循环中调用
printf

为了理解为什么我们需要循环,考虑一个不同的TiC Tac趾板,其中板是100×100。你的“某人赢了吗?”逻辑看起来像这样?


很容易看出,编码
if(board[0][0]…board[99][99]
和所有可能的组合很快就会让人疲惫不堪。另一方面,计算机喜欢重复做相同(或类似)的任务。这取决于人(你)确保精力花在有用的东西上。

我认为你在printf上有问题,因为player1和player2是char**但printf需要char*

我认为你在printf上有问题,因为