C语言课程设计#汉诺塔#
C程序设计课程设计报告
汉诺塔动态演示
一 课题分析
1.1 设计要求
在Visual c++环境下编写汉诺塔的程序并运行出汉诺塔游戏。能够改变汉诺塔塔盘的数量。可以电脑演示移动过程,也可以人为移动,并且能够控制塔盘移动速度。实现汉诺塔的简单动态演示。
1.1.1 目的
了解在开发环境中如何编辑,编译,连接和运行一个C语言程序。通过运行汉诺塔的
程序,初步了解C语言程序的结构特点。掌握C语言数据类型的概念,学会使用C语言的相关运算符构成表达式。
1.1.2 背景
世界范围内信息技术迅猛发展,新的技术和方法层出不穷。C语言在计算机应用中发
挥着重要作用,并且在全世界普及推广。作为当代大学生,有必要掌握和会运用C语言。
1.1.3 意义
这次课程设计,可以培养我们独立自主的学习能力,实事求是的学习态度,严谨治学
的学习作风,通过实践,建立系统设计的整体思想,锻炼编写程序、调试程序的能力,学习文档编写规范,吸取他人经验、探索前言知识的习惯,树立团队协作精神。同时课程设计还可以弥补我们自身在实践时所缺少的经验。这次对于汉诺塔这个问题的研究是我在C语言课程学习中递归函数的一次实际运用,对我的递归函数的理解会有更多的帮助。
1.2 实现功能
运用数据结构的相关知识,利用一定的算法制作出汉诺塔程序。能输入塔盘的数量(10
以内)和塔盘移动速度,支持人和电脑操作,并且显示移动过程和移动次数,实现汉诺塔的动态演示。
第1页 共10页
C程序设计课程设计报告
汉诺塔游戏 塔盘数量设置
2.1 框架设计移操动作速对度象调选节择 图1 汉诺塔功能结构图
二 整体设计
第2页 共10页
移动过程显示
C程序设计课程设计报告
图2 汉诺塔流程图
游戏结束 输出移动次数 塔盘全部在C座 移动塔盘 输入移动速度 是否小盘在大盘上 是否为人 调用while()进入主循环 2≤n≤10 游戏开始 输入塔盘数量n
第3页 共10页
C程序设计课程设计报告
三 详细设计
3.1问题描述
假设有三个分别命名为A,B和C的塔座,在塔座B上插有n个直径大小各不相同、从小到大编号为1,2,…,n的圆盘。现要求将塔座B上的n个圆盘移至塔座A上并仍按同样顺序叠排,圆盘移动时必须遵守以下规则: (1)每次只能移动一个圆盘;
(2)圆盘可以插在A,B和C中任一塔上;
(3)任何时刻都不能将一个较大的圆盘压在较小的圆盘之上。
要求:用程序模拟上述问题解决办法,并输出移动的总次数,圆盘的个数从键盘输入;并想办法计算出程序运行的时间。
3.2 算法思路 3.2.1建立数学模型
这个问题可用递归法解决,并用数学归纳法又个别得出普遍解法: 假设塔座B上有3个圆盘移动到塔座A上:
(1)将塔座B上2个圆盘借助塔座A移动到塔座C上; (2)将塔座B上1个圆盘移动到塔座A上;
(3)将塔座C上2个圆盘借助塔座B移动到塔座A上。 其中第2步可以直接实现。第1步又可用递归方法分解为: 1.1\将塔座B上1个圆盘从塔座X移动到塔座A; 1.2\将塔座B上1个圆盘从塔座X移动到塔座C; 1.3\将塔座A上1个圆盘从塔座Z移动到塔座C。 第3步可以分解为:
将塔座C上1个圆盘从塔座Y移动到塔座B; 将塔座C上1个圆盘从塔座Y移动到塔座A; 将塔座B上1个圆盘从塔座X移动到塔座A。 综上所述:可得到移动3个圆盘的步骤为 B->A,B->C, A->C, B->A, C->B, C->A, B->A,
3.2.2 算法设计
将n个圆盘由B依次移到A,C作为辅助塔座。当n=1时,可以直接完成。否则,将塔座B顶上的n-1个圆盘借助塔座A移动到塔座C上;然后将圆盘B上第n个圆盘移到塔座A上;最后将塔座C上的n-1个圆盘移到塔座A上,并用塔座B作为辅助塔座。
第4页 共10页
C程序设计课程设计报告
3.2 运用类的介绍
主类Tower
成员变量描述 汉诺塔对象 塔名数组 盘子数目 p 盘子大小 自动演示线程 自动演示文字显示搬运过程 菜单条 菜单 菜单项 显示时间 变量类型 HannoiTower Char[] int float Int Thread TextArea JMenuBar JMenu JMenuItem JTextField tower TowerName 盘子数目 盘子从上到下缩小的比例 盘宽,盘高 Thread 信息条 bar fileMenu1,fileMenu2,fileMenu3 开始游戏,重新开始,自动演示,英雄榜,退出, 背景音乐,帮助主题,关于汉诺塔; 显示时间 名称 类HannoiTower
成员变量描述 位置 p 搬运坐标 盘子数目 塔名 时间 塔点 移动状态 盘子 显示移动信息 用来计时 计时器是否启动 变量类型 int float int int char int TowerPoint boolean Disk TextArea Time boolean 变量名 X,Y 盘子从上到下缩小的比例 Shartx,Starty,Starti 盘子数目 Towername[] spendtime point[] move 盘子[] 信息条 计时 计时器是否启动 第5页 共10页
…… 此处隐藏:607字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




