BC110 井字棋

(来自 牛客网 编程初学者入门训练)

1.问题:

(链接呈上:井字棋

描述

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!

2.思路:

首先:输入的井字棋都是字符,故用字符数组进行存储(注意要包含空格以及 '\0' '\n');

其次:获胜的几种情形:行相同or列相同(用for循环分别测试各行各列,但是列时要注意只要真正的字符,而非 '\0' or '\n')对角线相同(对角线两种情况)

最后:注意 获胜 or 失败 情况,一定要注意书写!注意 标志flag!

3.代码:

#include<stdio.h>
int main()
{
	char chess[3][6] = { 0 };
	//printf("请开始下棋:\n");
	int i = 0;
	for (i = 0; i < 3; i++)
	{
		int j = 0;
		for (j = 0; j < 6; j++)
		{
			scanf("%c", &chess[i][j]);
		}
	}
	int flag = 0;
	for (i = 0; i < 6; i++)
	{
		//行判断
		if ((chess[i][0] == chess[i][2]) && (chess[i][2] == chess[i][4]) && (chess[i][0] != 'O'))
		{
			if (chess[i][0] == 'K')
			{
				printf("KiKi wins!\n");
				flag = 1;
				break;
			}
			else if (chess[i][0] == 'B')
			{
				printf("BoBo wins!\n");
				flag = 1;
				break;
			}
		}
		//列判断
		//列判断要注意 空格!以及 O
		if ((chess[0][i] == chess[1][i]) && (chess[1][i] == chess[2][i]) && ((chess[0][i] != 'O') && (chess[0][i] != ' ')))
		{
			if (chess[0][i] == 'K')
			{
				printf("KiKi wins!\n");
				flag = 1;
				break;
			}
			else if (chess[0][i] == 'B')
			{
				printf("BoBo wins!\n");
				flag = 1;
				break;
			}
		}
		//对角线判断:有两种情况!!
		if ((chess[0][0] == chess[1][2]) && (chess[1][2] == chess[2][4]) && (chess[0][0] != 'O'))
		{
			if (chess[0][0] == 'K')
			{
				printf("KiKi wins!\n");
				flag = 1;
				break;
			}
			if (chess[0][0] == 'B')
			{
				printf("BoBo wins!\n");
				flag = 1;
				break;
			}
		}
		if ((chess[0][4] == chess[1][2]) && (chess[1][2] == chess[2][0]) && (chess[0][4] != 'O'))
		{
			if (chess[0][4] == 'K')
			{
				printf("KiKi wins!\n");
				flag = 1;
				break;
			}
			if (chess[0][4] == 'B')
			{
				printf("BoBo wins!\n");
				flag = 1;
				break;
			}
		}
	}
	if (flag != 1)
	{
		printf("No winner!\n");
	}
	return 0; 
}

4.总结: 

因为一直有漏就花费了很长时间,不过只要最后写出来就好!!

继续加油呀!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

'Dream是普通小孩耶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值