题解 | #井字棋#

井字棋

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

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务