题目

21根火柴游戏。现有21根火柴,两人轮流取,每人每次可以取1至4根,不可多取(假如多取或者取走的数量不在合法的范围内,则要求重新输入),也不能不取,谁取最后一根火柴谁输。请编写一个程序进行人机对弈,要求人先取,计算机后取;请设计一种计算机取走火柴的规则,使得计算机一方为常胜将军。
**输入格式要求:“%d” 提示信息:“Game begin:\n” “How many sticks do you wish to take (1~%d)?”
**输出格式要求:" %d sticks left in the pile.\n" " You have taken the last sticks.\n"
" ***You lose!\nGame Over.\n" “Computer take %d sticks.\n”
程序运行示例如下:
Game begin:
How many sticks do you wish to take (1~4)?6
How many sticks do you wish to take (1~4)?3
18 sticks left in the pile.
Computer take 2 sticks.
16 sticks left in the pile.
How many sticks do you wish to take (1~4)?3
13 sticks left in the pile.
Computer take 2 sticks.
11 sticks left in the pile.
How many sticks do you wish to take (1~4)?3
8 sticks left in the pile.
Computer take 2 sticks.
6 sticks left in the pile.
How many sticks do you wish to take (1~4)?3
3 sticks left in the pile.
Computer take 2 sticks.
1 sticks left in the pile.
How many sticks do you wish to take (1~1)?2
How many sticks do you wish to take (1~1)?1
You have taken the last sticks.
***You lose!
Game Over.

实现

思路:电脑为后手,其输入只需和人类输入之和凑够5即可,经过4轮之后,最后一个自然落在了人类手上。

#include <stdio.h>
#define N 4
int main(){printf("Game begin:\n");int left = 21;while(left > 0){int numA, numB;int len = left > N ? N : left;printf("How many sticks do you wish to take (1~%d)?", len);scanf("%d", &numA);while(numA < 1 || numA > len){printf("How many sticks do you wish to take (1~%d)?", len);scanf("%d", &numA);}left -= numA;if(left > 0){printf(" %d sticks left in the pile.\n", left);}if(left > 1){switch (numA) {case 1:numB = 4;break;case 2:numB = 3;break;case 3:numB = 2;break;case 4:numB = 1;break;}left -= numB;printf("Computer take %d sticks.\n", numB);printf(" %d sticks left in the pile.\n", left);fflush(stdout);} else{   //left == 1left--;printf("You have taken the last sticks.\n");printf(" ***You lose!\nGame Over.\n");}}
}

21根火柴游戏【C语言实现】相关推荐

  1. 21 根火柴游戏(常胜将军)

    问题来自头歌 任务描述 本关任务:火柴游戏. 相关知识 为了完成本关任务,你需要掌握:C 语言基础. 火柴游戏 21 根火柴游戏.现有 21 根火柴,两人轮流取,每人每次可以取 1 至 4 根,不可多 ...

  2. 21根火柴常胜将军c语言,常胜将军算法

    甲和乙两人玩抽取火柴的游戏,共有21根火柴.每人每次最多取4根,最少取1根火柴.如果某个人取到最后一根火柴则输了.甲让乙先抽取,结果每次都是甲赢.这是为什么? 算法分析:甲要每次都赢,那么每次甲只给乙 ...

  3. python 实现21根火柴游戏

    游戏规则::有21根火柴,人和计算机轮流拿,人先拿(输入拿几根)计算机后拿,每次至少1根最多4根,拿到最后一根火柴的算输,要确保计算机一定可以获胜 tips:保证计算机最后能拿到20,所以就不能取16 ...

  4. 23根火柴游戏 c语言,23 根火柴游戏

    #includegt; int main() { int g = 23; int k = 3; int b, c;printf("这里是23 根火柴游戏!!\n"); printf ...

  5. C语言------实现抢21根火柴的小游戏

    有21根火柴,两人依次取,每次每人只可取走1~4根,不能多取,也不能不取,谁先取得最后一,火柴谁输.请编写程序一个人机对弈程序,要求人先取,计算机后取,保证计算机为"常胜将军"即一 ...

  6. 21根火柴取放 c语言,趣味C语言题Word版

    <趣味C语言题Word版>由会员分享,可在线阅读,更多相关<趣味C语言题Word版(21页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文档 ,希望对您有帮助,可双击 ...

  7. Craps赌博游戏、百钱白鸡、七星彩选号、抓小偷、21根火柴、10000以内完美数

    Craps赌博游戏 游戏规则:同时扔两颗骰子,第一次扔出的点数数7或则11玩家胜,扔出2.3或则12庄家胜利,否则继续扔骰子. 以后只要扔出和第一次相同的点数玩家胜,扔出7庄家胜. 玩家每次进入有10 ...

  8. c语言人机23根火柴游戏,23根火柴游戏.doc

    23根火柴游戏 #include #include #define NUM 20 using namespace std; void main() { //规则的输出 cout< cout< ...

  9. C#,21根火柴棍问题(21 Matchticks Problem)的算法与源代码

    一.21根火柴棍问题(21 Matchticks Problem) 21根火柴棍问题是西方经典游戏之一. 给定21根火柴,2个人A和B(比如:分别是计算机和用户). 每个人一次可以挑选 1-- 4 根 ...

最新文章

  1. 黑马lavarel教程---13、分页
  2. ACM入门之【搜索】
  3. Oracle在不同的语言环境结果to_date错误的问题
  4. 官方正式预热华为Mate40系列发布盛典:余承东称还有新功能
  5. 真有钱!科大讯飞年中分红:共派发现金红利2.2亿元
  6. VSCode之调试html
  7. javascript offsetLeft,Left,clientLeft 各种浏览器位置相关属性
  8. 网站程序 Bin目录下 dll无法删除,删除并编译后自动重新引用的解决方法
  9. mac版本markdown编辑器工具:Typora 下载
  10. 基于openoffice+pdfobject.js实现文档上传以及在线预览功能
  11. PythonStock(9):使用优矿uqer.io 进行简单的数据分析
  12. 深入存储驱动:Overlay2
  13. 火车头采集器使用‘导入数据库’形式发布数据到帝国CMS数据库的过程(原创)适用于ECMS7.2
  14. 电脑录屏是哪个快捷键?3个录屏快捷键,教你快速录屏
  15. java容器~面试知识点整理
  16. 2021年德阳2中高考成绩查询,2021年德阳高中录取分数线是多少及高中排名榜
  17. 详解border-radius属性
  18. SDL库及SDL_draw库的安装、SDL库的使用
  19. 包子笔记 - 三知道原则
  20. 利用canvas制作加速球波浪效果

热门文章

  1. excel导出设置分隔符_使用管道(或其他)定界符而不是逗号导出或保存Excel文件...
  2. echart 桑基图操作事项
  3. 如何使用fgets()函数
  4. android 天气软件的动态天气效果怎么实现的,超炫动态效果的安卓天气软件 《GO天气》...
  5. 察言观色—看穿他人心理的6种方法
  6. 去掉word2007里文档结构图目录底色的方法
  7. Python—itchat下载拼接微信好友头像图
  8. 电容笔和Apple pencil有什么区别?Ipad主动式电容笔推荐
  9. Cannot retrieve repository metadata 处理记录
  10. 飞机大战小游戏的简介