#define N 3 #define M 3 #include <stdio.h> char is_win(char arr[N][M], int n, int m) { int i, j; //判断行 for (i = 0; i < n; i++) { if (arr[i][1] == arr[i][2] && arr[i][1] == arr[i][0]) { return arr[i][1]; } } //判断列 for (i = 0; i < n; i++) { if (arr[1][i] == arr[2][i] && arr[1][i] == arr[0][i]) { return arr[1][i]; } } //主对角线 for (i = 0; i < n - 1; i++) { if (arr[i][i] != arr[i + 1][i + 1]) break; else return arr[0][0]; } //副对角线 for (i = 0; i < n - 1; i++) { if (arr[i][n - i -1] != arr[i + 1][n - i-2]) break; else return arr[0][n - 1]; } return ' ';//注意要返回个值 //2 0//1 1//0 2//n-1 } int main() { int i, j; char board[N][M]; for (i = 0; i < N; i++) { for (j = 0; j < M; j++) { scanf(" %c", &board[i][j]);//这样才能生成3×3列 } } char flag = is_win(board, N, M); if (flag == 'K') printf("KiKi wins!"); else if (flag == 'B') printf("BoBo wins!"); else printf("No winner!"); }