21根火柴游戏【C语言实现】
创始人
2025-05-30 19:26:25
0

题目

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 
#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");}}
}

相关内容

热门资讯

今天小雪简短祝福语 今天小雪简短祝福语(精选80句)  在我们平凡的日常里,大家对祝福语都不陌生吧,祝福语可以起到增进感...
暖心元旦祝福语QQ 精选暖心元旦祝福语QQ集合43句  一夜春风到,元旦花枝俏;俏也不争春,只报福来报;冬雪静静飘,祝福...
项目协同管理软件的优秀功能有哪... 项目协同管理软件哪个好?通过使用Zoho Projects项目协同管理软件将合适的人员...
简洁的早安问候语 简洁的早安问候语(精选100句)  无论在学习、工作或是生活中,大家都写过问候语吧,问候语可以起到可...
圣诞节快乐的祝福语 精选圣诞节快乐的祝福语汇总62句  送你一棵圣诞树,树根是健康的体魄,树干是幸福的家庭,树枝是顺心的...
3.21 最短路 思路 首先设置一个d[i]数组,用于表示从起点到点i最短距离是多少对于起点来说...
晶晨S905D3切换到外部ph... 文章目录 前言一、s905d3的以太网驱动的理解二、修改设备树注意 前言 随着芯片的国产化推荐...
软件测试相关的一些笔记(七拼八... 小插曲 IT行业职位简称 PD---product director(产品总监/部门经...
通过DNS数据包解释DNS协议... 通常来说,想要对DNS最为权威和全面的定义见RFC文档,这里。但是本文不...
新年贺词祝福语 【实用】新年贺词祝福语(精选210句)  在平平淡淡的学习、工作、生活中,大家都尝试过写贺词吧,贺词...
优美的情人节祝福语短信摘录 2020年精选优美的情人节祝福语短信摘录23条  穿黑衣,带黑帽,单身贵族好热闹。黑皮鞋,黑夹袄,黑...
宝宝满月贺词 宝宝满月贺词  在日常生活或是工作学习中,大家都经常接触到贺词吧,贺词是在喜庆的仪式上所说的对人对事...
送给朋友的感恩节祝福语短信 2020年送给朋友的感恩节祝福语短信大汇总56条  友情是一盏明灯,照亮了我人生的黑暗;友情是一句问...
Elastic之elastic... 一、Elastic介绍 Elastic有一条完整的产品线及解决方案:Elastics...
十七、网上商城项目(1) 本章概要 脚手架项目搭建安装与配置 axios首页 页面头部组件 头部搜索框组件头部购物车组件头部组...
JavaScript【链表】 一、单向链表 1.链表和数组的缺点 2.链表的优势 3.单向链表简介 链表和数组一样࿰...
50岁生日祝福语 五十岁生日... 50岁生日祝福语 五十岁生日贺词人生感叹,10岁时,无忧无虑,天真无邪,20岁时,忙碌奔波,辛苦工作...
<Linux开发> linux... <Linux开发> linux开发工具-之-CMake简单例程[再见] Cmake相关文章如下: 1...
国庆节简单祝福语 2022年国庆节简单祝福语(精选155句)  在现实生活或工作学习中,大家都不可避免地会接触到祝福语...
母亲节丈母娘祝福语 母亲节丈母娘祝福语(精选175句)  在学习、工作或生活中,许多人都有过写祝福语的经历,对祝福语都不...