C语言-数字炸弹汉诺塔
1.数字炸弹
制作简单的猜数字游戏,程序运行时自动产生1~100的随机数字,接着等待键盘输入猜的数字,若输入的数字不对,那么现在猜数字的范围就缩小,直至猜对为止。
(1).随机数的产生
C语言提供srand()函数,配合rand()函数可产生介于0~32767之间的随机数(函数均包含在stdlib.h中)。
srand((unsigned int)time(NULL));//做随机数产生器的种子,time()函数包含在time.h中
guess=rand()//以上得到种子随机在0~32767产生整数
(2).1~100之间的随机数
首先用rand()函数产生的随机数,然后对100求余(rand()%100,产生0~99之间的整数,然后加一,即rand()%100+1就可以产生1~100之间的随机数)
代码实现如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{ int i,date;int left=0,right=100;srand((unsigned int)time(NULL));//做随机数产生器的种子 date=rand()%100+1;//以上得到种子随机在0~32767产生整数printf("请在%d~到%d中输入一个数字:\n",left,right);scanf("%d",&i);while(i!=date){if(i>date){printf("猜大了!");right=i; printf("请在%d~到%d中输入一个数字:\n",left,right);}else{printf("猜小了!");left=i; printf("请在%d~到%d中输入一个数字:\n",left,right);}scanf("%d",&i);}if(i==date){printf("bingo!");}return 0;
}
2.汉诺塔
(1).汉诺塔的由来
法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。
印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。
(2).游戏规则
1、有三根相邻的柱子,标号为A,B,C。
2、A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘。
3、现在把所有盘子借助柱子B移动到柱子C上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方。
在游戏中,由于每次只能移动一个圆盘,所以在移动的过程中显然要借助另外一根针才可以实施。也就是说,步骤 1 将 1~63 个盘子移到 Y 上,需要借助 Z;步骤 3 将 Y 针上的 63 个盘子移到 Z 针上,需要借助 X。汉诺塔的拆解过程刚好满足递归算法的定义,因此,对于如此难题,使用递归来解决,问题就变得相当简单了!
代码实现如下:
#include <stdio.h>
void hanoi(int n,char x,char y,char z);void hanoi(int n,char x,char y,char z)
{if(n==1){printf("%c-->%c\n",x,z);}else{hanoi(n-1,x,y,z);printf("%c-->%c\n",x,z);hanoi(n-1,y,x,z);}
}
int main(void)
{int n;printf("汉诺塔层数为:");scanf("%d",&n); hanoi(n,'x','y','z');
}
C语言-数字炸弹汉诺塔相关推荐
- c语言递归汉诺塔次数,c语言递归解决汉诺塔参数变化的疑惑
c语言递归解决汉诺塔参数变化的疑惑 答案:3 信息版本:手机版 解决时间 2020-04-05 14:20 已解决 2020-04-05 10:49 #include void main() {vo ...
- c语言递归解决汉诺塔问题
c语言递归解决汉诺塔问题 参考文章: (1)c语言递归解决汉诺塔问题 (2)https://www.cnblogs.com/didiaoxiaoguai/p/6686407.html 备忘一下.
- 【项目展示】自己用C语言编写的汉诺塔小游戏
本文目录 1.前言 2.什么是汉诺塔? 3.项目规格 4.基本思路 5.源代码 6.运行结果 7.感想与心得 8.未来规划 1.前言 昨儿个把自己大一时候写过的五子棋重构了一下,之后就在想着要不把不知 ...
- 汉诺塔c语言源程序步骤,汉诺塔问题的算法分析及C语言演示程序的实现
摘要:该文对经典的"汉诺塔"问题进行了详细的分析,并用C语言实现.通过问题的具体实现,使学习者了解问题的全过程,推广到一般. 关键词:汉诺塔;递归;C语言 中图分类号:TP301. ...
- C语言入门递归算法——汉诺塔(简单易懂,最后还有汉诺塔游戏)
什么是汉诺塔: 汉诺塔:(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始 ...
- c语言中的汉诺塔问题详解
汉诺塔问题是一个古典的数学问题,也是c语言学习中一个用递归方法解题的典型实例,我们先看一下原题. 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号A ...
- c语言 汉诺塔游戏下载,使用C语言解决益智游戏——“汉诺塔”
说明: 文章所有内容截选自实验楼教程[3个C语言实例带你掌握递归方法论],教程里还有两个实例,感兴趣的可以点击查看: 文章主要是带你通过解决这个游戏来利用递归解决实际问题并掌握其核心思想,懂得如何使用 ...
- C语言练习题之汉诺塔(MOOC)
题目内容: 汉诺塔是由三根杆子A,B,C组成的.A杆上有N个(N>0)穿孔圆盘,盘的尺寸由下到上依次变小,盘的数字编号由上到下依次递增(Disk1为最顶部的圆盘).要求按下列规则将所有圆盘移至C ...
- C语言 递归实现汉诺塔问题 【图文讲解、简单易懂】
汉诺塔问题是我们在学习函数递归时常遇见的一类问题,那么如何用简单易懂的思路来解决汉诺塔问题呢?下面我会为大家进行讲解 目录 汉诺塔是什么? 汉诺塔的来源 用C语言实现汉诺塔 汉诺塔问题分析思路: 用代 ...
最新文章
- 刷手机被AI公开点名,比利时议员在议会上不能再「分心」了
- iOS 模仿微信的照片选择器
- 裁员屠刀下一个目标会是谁?
- Entity Framework 学习笔记(1)
- js会用php处理吗,js怎么跟php结合使用
- Spring Boot(一) 自动装配--约定大于配置
- Python中利用Matplotlib绘制多图并合并展示
- [android] listview入门
- html一行中怎么写空格,html – 用一行填写空格
- java自定义错误码类_如何编写和应用Java的自定义异常类
- CNCF landscape 云原生 敏捷开发
- gb2312编码在线转换_文件打开乱码?来了解一下文件编码
- 大数据网站汇总(数据搜集、大数据竞赛、)
- matlab找最大值_matlab求函数最大值
- 计算机启动太慢的原因是,电脑启动慢的原因分析
- odbc An unsupported operation was attempted
- ESPIDF开发ESP32学习笔记【SPI与片外FLASH基础】
- 金蝶云星空配套材料采购生成采购申请单
- excel中单元格日期为计算机日期,#excle里设置今天的日期#excel表格时间如何自动修改为当天的时间...
- Qt的QVector类
热门文章
- 解决mysql [1045] Access denied for user 'root'@'192.168.180.248' (using password: YES)
- 魂斗罗归来大觉机器人_魂斗罗归来挑战Boss模式血量分析
- win10录屏_一分钟教你学会两种电脑录屏方法,以后别再说不知道了
- 土法神经网络 Part I:计算图
- 数字图像处理(六) 图像压缩
- php8关闭jit,PHP8新功能JIT 编译器、联合类型和属性
- Transformers 示例 | 六
- Android——超简单 MVC、MVP、MVVM入门系列
- 给别人的比别人期待的多一些
- linux内核futex快速用户空间互斥体简介