题解 | #井字棋#
井字棋
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")的问题 没有加空格 导致空格被输入进棋盘 自然判断会出 问题 此外 上述代码 偏向于面向结果编程 离开题目就意义不大了 //我们写代码 得和函数一样 高内聚低耦合