- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言课程设计----汉诺塔问题
沈阳航空航天大学
课 程 设 计 报 告
课程设计名称:C语言课程设计
课程设计题目:汉诺塔问题
目 录
第1章 概述 1
第2章 设计目的 2
第3章 问题分析 4
第4章 逻辑设计 5
第5章 流程图 4
第6章 程序代码 4
第7章 程序调试与测试 4
第8章 结果分析 4
参考文献 6
附 录(程序) 7
第1章 概述
数据结构是计算机学科非常重要的一门专业基础理论课程,要想编写针对非数值计算问题的高质量程序,就必须要熟练的掌握这门课程设计的知识。另外,他与计算机其他课程都有密切联系,具有独特的承上启下的重要位置。拥有《数据结构》这门课程的知识准备,对于学习计算机专业的其他课程,如操作系统、数据库管理系统、软件工程的都是有益的。
第2章 设计目的
《数据结构课程设计》课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化与提高。因此,要求学生能综合应用所学的知识,设计与制作出具有较复杂的应用系统,并且在实验的基本技能方面进行一次全面的训练。
1.使学生能够较全面地巩固和应用课堂所学的基本理论和程序设计方法,能够较熟练的完成数据结构程序的设计与调试。
2.培养学生综合运用所学知识独立完成数据结构程序员课题的能力。
3.培养学生用于探索、严谨推理、实事求是、有错必改,用时间来检验理论,全方位考虑问题等科学技术人员应具有的素质。
4.提高学生对工作认真负责额、一丝不苟,对同学团结友爱,协作攻关的基本素质。
5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
6.对学生掌握知识的深度。运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
第3章 问题分析
任务:有三个柱子A, B, C. A柱子上叠放有n个盘子,每个盘子都比它下面的盘子要小一点,
可以从上到下用1, 2, ..., n编号。要求借助柱子B,把柱子A上的所有的盘子移动到柱子C上。
移动条件为:1、一次只能移一个盘子;
2、移动过程中大盘子不能放在小盘子上,只能小盘子放在大盘子上。首先容易证明,当盘子的个数为n时,移动的次数应等于2^n - 1。
首先把三根柱子按顺序排成品字型,把所有的圆盘按从大到小的顺序放在柱子A上。
根据圆盘的数量确定柱子的排放顺序:若n为偶数,按顺时针方向依次摆放 A B C;
若n为奇数,按顺时针方向依次摆放 A C B。
(1)按顺时针方向把圆盘1从现在的柱子移动到下一根柱子,即当n为偶数时,若圆盘1在柱子A,则把它移动到B;
若圆盘1在柱子B,则把它移动到C;若圆盘1在柱子C,则把它移动到A。
(2)接着,把另外两根柱子上可以移动的圆盘移动到新的柱子上。
即把非空柱子上的圆盘移动到空柱子上,当两根柱子都非空时,移动较小的圆盘
这一步没有明确规定移动哪个圆盘,你可能以为会有多种可能性,其实不然,可实施的行动是唯一的。
(3)反复进行(1)(2)操作,最后就能按规定完成汉诺塔的移动。
这是个递归问题。主函数很简单,不说了,关键是那个递归函数:这里有四个参数,第一个表示移动的盘子个数,这里可以通过键盘来输入。(全部移动64个盘子需要的时间很长,千万不要输入太大的数。)
x,y,z表示三根柱子。
注意参数中X,Y,Z的顺序,x表示原来的柱子,y表示在移动过程中中间过度的柱子,而z标志最后放置的柱子。下面的调用和这个次序有很大关系。
movedishes(int n,int x,int y,int z)
{
if(n==1)
这个最简单,如果只有一个盘子(n=1),那么只要从x柱子直接移动到z柱子就可以了。不需要中间以哦的那个其他的盘子。
如果要移动的盘子不止一个,那么就要采取一定的策略。这个策略就是先把上面的n-1个盘子移动到中间的柱子,也就是y,然后把最地下一个盘子移动到z柱子,然后再把中间柱子y上的盘子通过哦a柱子移动到z柱子上。
else
{
//把上面的n-1个盘子通过z柱子移动到y柱子上,这样才能把最后一个盘子移动到z柱子上。
//输出这次移动
//然后再把刚才移动出来放在y柱子上的n-1个盘子移动到z柱子上。
}
流程图
第6章 程序代码
#includestdio.h
int i=0; /*记录每一步为第几步*/
void movedishes(int n,int x,int y,int z)
{
if(n==1)
{
printf( %d. %c→%c ,i+1,x,z);/*输出步骤*/
i++;
if(i%7==
您可能关注的文档
- 2017版 毛概课件 第6章 社会主义本质和建设中国特色社会主义总任务.ppt
- 2017最新科技公司智慧农业解决方案.ppt
- 2017最新消防知识培训课件.ppt
- 2017精品文档行政机关公文写作与范例大全.ppt
- 2017版煤矿安全生产标准化通解_图文.ppt
- 2017联通营业厅开业庆典活动策划方案.pptx
- 2017银行保险理财沙龙客户答谢会课件鸿盈版.ppt
- 2017重症哮喘诊断与处理专家共识-.pptx
- 2017高血压健康教育讲座课件.ppt
- 2017鸡年年货节方案_图文.ppt
- 财务管理专业 企业并购财务风险分析与防范分析研究——以阿里巴巴并购网易考拉为例.docx
- 财务管理专业 企业并购的财务风险管理研究分析-以美的并购库卡为例.docx
- 财务管理专业 沃尔玛存货管理问题研究分析.docx
- 财务管理专业 福安药业财务风险分析及防范策略分析研究.docx
- 财务管理专业 白象公司成本管理研究分析.docx
- 财务管理专业 云南白药股份有限公司营运资金管理研究分析.docx
- 工商管理专业 中通快递培正站点服务质量评价研究分析.doc
- 房山区良乡地区洗车行业管理现状的调查报告分析研究 公共管理专业.docx
- 第二单元文化传承与创新 测试练习题.doc
- 必修2第一章第三节化学键四星题.doc
最近下载
- 拼多多财务报表分析.pdf VIP
- 普通高等学校本科教育教学审核评估 自评报告 (第二类第一种).pdf VIP
- 《销售人员心态培训》课件.pptx VIP
- [临沧]云南临沧市临翔区教育体育局临翔区城区部分学校调配教师89人 笔试上岸试题历年典型考题及考点剖析附答案详解.docx
- 就这900句玩转口语纯正的美国本土活语言就这900句玩转口语.pdf
- 销售人员心态培训课件.pdf VIP
- 模块风冷机组系统设计方案.doc
- 2022—2023学年北师大版数学七年级上册第二章有理数及其运算单元测试卷含答案 .docx
- 建筑信息模型理论知识考试样题、实操技能考核样题、建模图纸.pdf VIP
- 01:科学新知 Future food -2023中考英语外刊阅读原创试题(全国)-中考英语备考资料重点汇总知识点归纳.docx VIP
文档评论(0)