C语言牛客网题目--井字棋代码详解

井字棋
KiKi和BoBo玩 “井”字棋。也就是在九宫格中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。
输入描述:
三行三列的字符元素,代表棋盘状态,字符元素用空格分开,代表当前棋盘,其中元素为K代表KiKi玩家的棋子,为O表示没有棋子,为B代表BoBo玩家的棋子。
输出描述:
如果KiKi获胜,输出“KiKi wins!”;
如果BoBo获胜,输出“BoBo wins!”;
如果没有获胜,输出“No winner!”。
示例1
输入:
K O B
O K B
B O K
复制
输出:
KiKi wins!
逻辑分析:
1.首先我们要创建一个3*3的字符二维数组来存储这些棋子

char arr[3][3] = { 0 };//将数组初始化为0

2.接着就是定义 i 和 j 两个变量,用两层for循环来接收棋子。
这里需要注意的是,我们每次在输完一个字符后都会敲一下回车,也就是\n,当字符被拿走之后,\n还会呆在缓冲区里,然后在输出的时候,程序就会把\n也当作一个字符拿走,这样一来我们的程序就会出问题。
解决:我们可以在输入时在%c的前面加一个空格,每次落下的回车就会被自动消耗了,顺利帮我们解决了这个问题。

int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{for (j = 0; j < 3; j++){scanf(" %c", &arr[i][j]);}//输入时%c前面记得加空格}

3.在数组元素全部输入完后,我们就要去判断输赢了,判断输赢无非就是3种情况
(1)一行元素全都相等
(2)一列元素全都相等
以上这两种情况我们都需要用循环去搞定,因为我们一共要检查3行,3列,需要用一个for循环。
然后我们需要搞清楚赢的人是谁,如果有连续的三个’K’连成一行或一列或对角线,那就是KiKi赢;如果有连续的三个’B’连成一行或一列或对角线,那就是BoBo赢;那我们可以定义一个变量flag,因为字符o在题中表示没有棋子,那我们就将其初始化为o.
如果一行的三个元素都相等,那我们直接将其中的任意一个元素赋给flag,如果是三个K,那flag=‘K’,则表示KiKi赢;如果是三个B,那flag=‘B’,则表示BoBo赢;否则就是没有人获胜的情况,输出"No winner!".

    //判断是谁赢//判断行char flag = 'o';for (i = 0; i < 3; i++){if (arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2] && arr[i][1] != 'o'){flag = arr[i][0];break;//如果有人获胜就直接break跳出循环}//判断列if (arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i] && arr[1][i] != 'o'){flag = arr[0][i];break;}}

(3)还有第三种情况就是两条对角线,这个我们分别去判断就好了:

 //判断对角线if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[0][0] != 'o'){flag = arr[0][0];}if (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[0][2] != 'o'){flag = arr[0][2];}

4.还有最后一步就是根据flag 的值去判断谁是赢家,输出题中对应的文本就可以了:

   if (flag == 'K'){printf("KiKi wins!\n");}else if (flag == 'B'){printf("BoBo wins!\n");}else {printf("No winner!");}

最后为大家附上完整的代码:

#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {char arr[3][3] = { 0 };int i = 0;int j = 0;for (i = 0; i < 3; i++){for (j = 0; j < 3; j++){scanf(" %c", &arr[i][j]);}}//判断行char flag = 'o';for (i = 0; i < 3; i++){if (arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2] && arr[i][1] != 'o'){flag = arr[i][0];break;}//判断列if (arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i] && arr[1][i] != 'o'){flag = arr[0][i];break;}}//判断对角线if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[0][0] != 'o'){flag = arr[0][0];}if (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[0][2] != 'o'){flag = arr[0][2];}//判断是谁赢if (flag == 'K'){printf("KiKi wins!\n");}else if (flag == 'B'){printf("BoBo wins!\n");}else {printf("No winner!");}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JS重点知识02】栈、堆与数据类型 关系

一&#xff1a;栈堆空间分配区别&#xff1a; 1 栈&#xff1a;由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈&#xff1b; 简单数据类型存放在栈中 2 堆&#xff1a;存储复杂数据类型&#xff08;对象&#xff09;&#xff0c;…

【JMeter接口自动化】第3讲 Jmeter语言及外观配置

Jmeter语言配置 方法一&#xff1a;暂时生效&#xff0c;下次打开JMeter还会恢复默认配置 Jmeter安装后&#xff0c;默认语言是英文&#xff0c;可以在“选项”——“选择语音”中更改 方法二&#xff0c;修改配置文件&#xff0c;永久生效 修改jmeter.properties文件 Jmete…

【详细讲解版】史上最全transformer面试题

史上最全transformer面试题答案 1.Transformer为何使用多头注意力机制&#xff1f;&#xff08;为什么不使用一个头&#xff09;2.Transformer为什么Q和K使用不同的权重矩阵生成&#xff0c;为何不能使用同一个值进行自身的点乘&#xff1f;3.Transformer计算attention的时候为…

20240601在Toybrick的TB-RK3588开发板上跑IPC的SDK并确认eth0

20240601在Toybrick的TB-RK3588开发板上跑IPC的SDK并确认eth0 2024/6/1 20:06 ADB的详细LOG&#xff1a; Microsoft Windows [版本 10.0.22621.3296] (c) Microsoft Corporation。保留所有权利。 C:\Users\QQ>adb shell adb server version (40) doesnt match this client …

全国产飞腾模块麒麟信安操作系统安全漏洞

1、背景介绍 目前在全国产飞腾模块上部署了麒麟信安操作系统&#xff0c;经第三方机构检测存在以下漏洞 操作系统版本为 内核版本为 openssh版本为 2、openssh CBC模式漏洞解决 首先查看ssh加密信息 nmap --script "ssh2*" 127.0.0.1 | grep -i cbc 可以通过修改/…

STL用法总结

文章目录 vector构造常用函数遍历适用情形注意事项使用迭代器删除可能会出现的错误 Set & MultiSet&#xff08;不能用sort,会自动排序&#xff09;构造常用函数删除&#xff0c;查找遍历 unordered_set(不排序集合&#xff09;&#xff0c;unordered_multiset Map & M…

spring boot 3.x版本 引入 swagger2启动时报错

一&#xff0c;问题 Spring Boot 3.x版本的项目里&#xff0c;准备引入Swagger2作为接口文档&#xff0c;但是项目启动报错&#xff1a; java.lang.TypeNotPresentException: Type javax.servlet.http.HttpServletRequest not present at java.base/sun.reflect.generics.…

儿童节礼物-你能满足孩子们吗

题目如下&#xff1a; 儿童节到了&#xff0c;幼儿园里有N个小朋友&#xff0c;每个小朋友都希望得到一份礼物。幼儿园的老师准备了M份不同的礼物&#xff0c;每份礼物都有一个编号&#xff0c;从1到M。老师希望每个小朋友都能得到一份礼物&#xff0c;但是每个小朋友对礼物的…

Nginx(openresty) 开启gzip压缩功能 提高web网站传输速度

1 开启nginx gzip压缩后&#xff0c;网页的图片&#xff0c;css、js等静态资源的大小会减少&#xff0c;节约带宽&#xff0c;提高传输效率&#xff0c;给用户快的体验,给用户更好的体验. 2 安装 #centos 8.5 yum install gzip 3 配置 #建议统一配置在http段 vim /usr/loca…

Python语言云:探索Python在云计算领域的无限可能

Python语言云&#xff1a;探索Python在云计算领域的无限可能 随着云计算技术的迅猛发展&#xff0c;Python作为一种强大且易用的编程语言&#xff0c;在云计算领域展现出了其独特的魅力和无限可能。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;深入剖析Python…

SleepFM:利用对比学习预训练的多模态“睡眠”基础模型

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在阅读过程中有些知识点存在盲区&#xff0c;可以回到如何优雅的谈论大模型重新阅读。另外斯坦福2024人工智能报告解读为通识性读物。若对于如果…

kaggle竞赛实战5

接下来将两套方案得结果做数据拼接 读数据 train_dict pd.read_csv(\ preprocess/train_dict.csv\ ) test_dict pd.read_csv(\ preprocess/test_dict.csv\ ) train_groupby pd.read_csv(\ preprocess/train_groupby.csv\ ) test_groupby pd.read_csv(\ …

逻辑这回事(三)----功耗优化

低功耗设计概述 低功耗设计动机 功耗的增加影响芯片Power grid(电源网格)的设计;功耗的增加导致芯片温度的上升,进而带来一系列影响。如Leakage Power增加;电路时序可能变差;IR Drop(IR压降)变大;功耗的增加导致芯片封装成本和散热成本的增加(packing cost、cooling cost)功耗…

window本地域名映射修改

位置 C:\Windows\System32\drivers\etc 文件名 hosts 修改方法 复制一份到桌面 修改桌面的文件 # 前面为ip 后面为域名&#xff0c;域名-》ip的映射 127.0.0.1 link.com最后将修改后的文件保存&#xff0c;复制到C:\Windows\System32\drivers\etc替换

Mysql 8.0.37 安装教程

图片有点长&#xff0c;慢慢来 安装教程 安装地址&#xff1a;MySQL :: MySQL Downloads 进入官网 下载社区版 此处有两个版本&#xff0c;我们下载的是8.0.37版本 第一个需要联网安装&#xff0c;我们现在第二个离线安装 server only&#xff1a;仅安装MySQL server clien…

Java18+前端html+后端springboot一套可在线预约、在线下单的家政预约上门服务系统源码 家政系统(用户端)介绍

Java18前端html后端springboot一套可在线预约、在线下单的家政预约上门服务系统源码 家政系统&#xff08;用户端&#xff09;介绍 家政服务用户端是一个为家庭用户提供便捷、高效家政服务的应用程序。 以下是家政服务用户端的详细功能描述&#xff1a; 一、注册与登录&#…

day46 完全背包理论基础 518. 零钱兑换 II 377. 组合总和 Ⅳ

完全背包理论基础 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 01背包内嵌的循环是从…

BearPi-HM Nano开发笔记

小熊派 简单介绍 BearPi-HM Nano开发板是一块专门为鸿蒙OS设计的HarmonyOS开发板&#xff0c;板载高度集成的2.4GHz WLAN SoC芯片Hi3861&#xff0c;并板载NFC电路及标准的E53接口可拓展 E53接口 介绍 E53接口标准为“物联网俱乐部”联合国内多家开发板厂家制定的物联网案…

80个GitHub上c/c++学习项目推荐——拎几个出来写进简历

1.《30天自制C服务器》 ①语言&#xff1a;c ②来源&#xff1a;GitHub 目前star:4.8k ③项目地址&#xff1a;https://github.com/yuesong-feng/30dayMakeCppServer ④类型&#xff1a;免费 2.《btop》&#xff08;命令行资源监视器&#xff09; ①语言&#xff1a;c ②…

【六一儿童节】的科技奇幻旅程:解锁【机器学习】与【人工智能】的无限创意

目录 一、机器学习与人工智能简介 二、六一儿童节的特殊意义 三、项目概述&#xff1a;智能绘画助手 四、技术栈和工具 五、数据准备 六、模型训练 1. 数据预处理 2. 构建和训练模型 七、智能绘画助手的实现 1. 搭建Flask应用 2. 客户端界面 八、扩展功能与优化 1…