【C】#井字棋#

井字棋

https://www.nowcoder.com/practice/0375c1d206ef48a3894f72aa07b2fdde

#include <stdio.h>

char isWin(char board[3][3]) {
    int i, j, flag = 1;
    //判断行
    for (i = 0; i < 3; i++) {
        flag = 1;
        for (j = 0; j < 2; j++) {
            if (board[i][j] == board[i][j + 1] && board[i][j] != 'O') {
                ;
            } else {
                flag = 0;
                break;
            }
        }
        if (flag) return board[i][j];
    }

    //判断列
    for (i = 0; i < 3; i++) {
        flag = 1;
        for (j = 0; j < 2; j++) {
            if (board[j][i] == board[j + 1][i] && board[j][i] != 'O') {
                ;
            } else {
                flag = 0;
                break;
            }
        }
        if (flag) return board[j][i];
    }

    //判断对角线
    //判断主对角线
    flag = 1;
    for (i = 0; i < 2; i++) {
        if (board[i][i] == board[i + 1][i + 1] && board[i][i] != 'O') {
            ;
        } else {
            flag = 0;
            break;
        }

    }
    if (flag) return board[i][i];

    //判断副对角线
    flag = 1;
    for (j = 0; j < 2; j++) {
        if (board[j][2 - j] == board[j + 1][1 - j] && board[j][2 - j] != 'O') {
            ;
        } else {
            flag = 0;
            break;
        }

    }
    if (flag) return board[j][2 - j];

    //棋盘满了,没有人获胜
    return 'O';
}

int main() {
    char board[3][3] = {0};
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            scanf("%c ", &board[i][j]);
        }
    }
    if (isWin(board) == 'K') printf("KiKi wins!");
    else if (isWin(board) == 'B') printf("BoBo wins!");
    else printf("No winner!");
    return 0;
}

全部评论

相关推荐

昨天 14:14
门头沟学院 Java
7.10投递7.15感谢信
投递地平线等公司7个岗位
点赞 评论 收藏
分享
吴offer选手:下午mt一来就告警说项目来不及,估计明天拿了权限就要参与开发了 已老实
实习生的蛐蛐区
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务