【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;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 14:00
不想多说了,什么逆天HR,还要教我礼貌😂
机械打工仔:这不纯傻卵吗,他还操心上别人老板了
投递BOSS直聘等公司8个岗位
点赞 评论 收藏
分享
05-27 14:57
西北大学 golang
强大的社畜在走神:27届真不用急,可以搞点项目、竞赛再沉淀沉淀,我大二的时候还在天天打游戏呢
投递华为等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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