C语言------实现抢21根火柴的小游戏
有21根火柴,两人依次取,每次每人只可取走1~4根,不能多取,也不能不取,谁先取得最后一,火柴谁输。请编写程序一个人机对弈程序,要求人先取,计算机后取,保证计算机为“常胜将军”即一直赢。
问题分析:
因为取得最后一根火柴的人为输且要保证电脑每次都赢,则最后一根火柴必须让人取得,这样就变成20根火柴只要保证20根火柴的最后一根被电脑取得就可以了,因为要求人先取火柴电脑后取,所以20根中只剩下5根时人先取,不管人取多少最后一根,必定落到电脑手中,依次类推15,10,直到一开始的5根火柴人先取,也是不管人取多少最后一根,必定落到电脑手中,所以只要保证每一轮的抽取中,人的取数+电脑的取数=5且每轮人先取,则最后的常胜将军必然是电脑
算法设计:
人先取数1~4根,显示火柴剩余数量,电脑再取数=5-(人取数1~4根),保证第5,10,15,20根都被电脑取走,则在总数21根中最后一根必然被人取走,如此电脑就是“常胜将军”
所以当火柴数为0时谁赢(但必然每次都是电脑赢)
#include<stdio.h>
void menu();
void game();
int main()
{
int input = 0;
do
{
menu();//菜单选择
scanf("%d", &input);
switch (input)//输入1进入case 1,输入0进入case 0
{
case 1:
game();//开始游戏
break;
case 0:
printf("退出游戏\n");
break;
default://除了case 1和case 0之外的选择
printf("菜单栏选项错误,请重新选择:\n");
break;
}
} while (input);
return 0;
}
//编写菜单栏
void menu()
{
printf("------------------------------------\n");
printf("------你不可能战胜我,不信试试------\n");
printf("------1.play 0.exit------\n");
printf("------------------------------------\n");
printf("请选择(1/0):\n");
}
//实现游戏
void game()
{
int computer, people, match = 21;
while (1)
{
printf("------------火柴数<%d>根------------\n", match);
printf("人取数:");
scanf("%d", &people);
if (people < 1 || people>4 || people > match)
{
printf("取火柴数不符合规则,请重新取数:\n");
continue;
}
match -= people;
if (match == 0)
{
printf("\n你输了,电脑赢\n");
printf("\n************************************\n");
break;
}
computer = 5 - people;
match -= computer;
printf("电脑取数:%d\n",computer);
if (match == 0)
{
printf("\n电脑输了,你赢\n");
printf("\n************************************\n");
break;
}
}
}
C语言------实现抢21根火柴的小游戏相关推荐
- 头歌23根火柴的小游戏
任务描述 本关任务:火柴游戏. 相关知识 为了完成本关任务,你需要掌握:C 语言基础. 火柴游戏 23 根火柴游戏.请编写一个简单的 23 根火柴游戏程序,实现人跟计算机玩这个游戏的程序.为了方便程序 ...
- c语言假设有21根火柴棍,10道火柴棍趣味智力题,据说全对的都是天才!
原标题:10道火柴棍趣味智力题,据说全对的都是天才! 各位小朋友及大朋友们,晚上好!欢迎来到科学有意思栏目.发现身边有趣的科学现象,激发孩子好奇心! 相信很多80后的朋友们,小时候一定和同学玩过各种趣 ...
- 21根火柴取放 c语言,趣味C语言题Word版
<趣味C语言题Word版>由会员分享,可在线阅读,更多相关<趣味C语言题Word版(21页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文档 ,希望对您有帮助,可双击 ...
- 21根火柴常胜将军c语言,常胜将军算法
甲和乙两人玩抽取火柴的游戏,共有21根火柴.每人每次最多取4根,最少取1根火柴.如果某个人取到最后一根火柴则输了.甲让乙先抽取,结果每次都是甲赢.这是为什么? 算法分析:甲要每次都赢,那么每次甲只给乙 ...
- 21根火柴游戏【C语言实现】
题目 21根火柴游戏.现有21根火柴,两人轮流取,每人每次可以取1至4根,不可多取(假如多取或者取走的数量不在合法的范围内,则要求重新输入),也不能不取,谁取最后一根火柴谁输.请编写一个程序进行人机对 ...
- 21 根火柴游戏(常胜将军)
问题来自头歌 任务描述 本关任务:火柴游戏. 相关知识 为了完成本关任务,你需要掌握:C 语言基础. 火柴游戏 21 根火柴游戏.现有 21 根火柴,两人轮流取,每人每次可以取 1 至 4 根,不可多 ...
- Craps赌博游戏、百钱白鸡、七星彩选号、抓小偷、21根火柴、10000以内完美数
Craps赌博游戏 游戏规则:同时扔两颗骰子,第一次扔出的点数数7或则11玩家胜,扔出2.3或则12庄家胜利,否则继续扔骰子. 以后只要扔出和第一次相同的点数玩家胜,扔出7庄家胜. 玩家每次进入有10 ...
- python 实现21根火柴游戏
游戏规则::有21根火柴,人和计算机轮流拿,人先拿(输入拿几根)计算机后拿,每次至少1根最多4根,拿到最后一根火柴的算输,要确保计算机一定可以获胜 tips:保证计算机最后能拿到20,所以就不能取16 ...
- C#,21根火柴棍问题(21 Matchticks Problem)的算法与源代码
一.21根火柴棍问题(21 Matchticks Problem) 21根火柴棍问题是西方经典游戏之一. 给定21根火柴,2个人A和B(比如:分别是计算机和用户). 每个人一次可以挑选 1-- 4 根 ...
最新文章
- JavaScript cookie
- Create Geometry from WKT(转载)
- Caffe常用层参数介绍
- wdpc搭建https网站
- FPGA的发展历史及相关名词解释
- 手机知识:手机蓝牙有6个使用场景,你都知道吗?
- 数据分析能不能替代Data Mining?
- css的9个常用选择器
- go mock mysql_go sqlmocks的使用
- Java项目—在线考试系统
- 基于 ANTLR 自己实现一个 SQL 解析器
- 三十八、C++ 信号捕获
- 基于Python的决策树分类器与剪枝
- python中loc和iloc
- java计时器StopWatch
- 蓝桥杯Web应用开发
- 劳动合同到期,公司提出不续签怎么办?
- CC2541之OAD
- 黑马程序员Android学习笔记——金山卫士项目——第四天
- 美图秀秀2013年6月5日实习生招聘题目