题解 | #井字棋#
井字棋
https://www.nowcoder.com/practice/0375c1d206ef48a3894f72aa07b2fdde
#include <stdio.h>
void Iswin(char board[3][3])
{
int a,b;
for (a = 0; a < 3; a++)
{
if (board[a][0] == board[a][1] && board[a][1] == board[a][2] && board[a][0] == 'K')
{printf("KiKi wins!"); return;}
if (board[a][0] == board[a][1] && board[a][1] == board[a][2] && board[a][0] == 'B')
{printf("BoBo wins!"); return;}
}
for (b = 0; b < 3; b++)
{
if (board[0][b] == board[1][b] && board[1][b] == board[2][b] && board[0][b] == 'K')
{printf("KiKi wins!"); return;}
if (board[0][b] == board[1][b] && board[1][b] == board[2][b] && board[0][b] == 'B')
{printf("BoBo wins!"); return;}
}
if ((board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] == 'K' )||( board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] == 'K'))
{printf("KiKi wins!"); return;}
if ((board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] == 'B' )||( board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] == 'B'))
{printf("BoBo wins!"); return;}
printf("No winner!");
return;
}
int main()
{
char board[3][3] = {0};
int i = 0, j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
scanf(" %c",&board[i][j]);
}
while(getchar() != '\n');
}
Iswin(board);
return 0;
}
//一个小问题 本来赢了 却输出平局 让我想了很久 还是细节基础不牢 当我还在检查判断逻辑的时候 其实是scanf("%C")的问题 没有加空格 导致空格被输入进棋盘 自然判断会出 问题 此外 上述代码 偏向于面向结果编程 离开题目就意义不大了
//我们写代码 得和函数一样 高内聚低耦合

腾讯成长空间 5933人发布