汉诺塔课程设计

合集下载

汉诺塔课程设计

汉诺塔课程设计

汉诺塔课程设计一、教学内容:1、了解汉诺塔的历史。

2、讲解汉诺塔的游戏规则。

二、课程设计目的:1、让伙伴们了解汉诺塔的历史,勾起孩子们的学习兴趣,让伙伴们更加热爱数学。

2、在掌握汉诺塔玩法的基础上,锻炼伙伴们的观察力,变通里,和右脑开发。

3、增强伙伴们的空间想象能力和动手能力。

4、让伙伴们体会到数学的神奇,从而对数学产生更加浓厚的兴趣。

三、培养技能:观察力、想象力、变通里、右脑开发。

四、所需工具:汉诺塔、记号笔。

五、教学流程概述:第一节课:1、讲一个关于汉诺塔的故事。

2、带领伙伴们一起观察和了解汉诺塔的游戏规则。

(以三盘为例说明)(30分钟)第二节课:汉诺塔4盘的移法。

(30分钟)第三节课:汉诺塔5盘的移法。

(30分钟)第四节课: 汉诺塔月底考核。

(30分钟)六、教学流程详细解读:第一节课:让伙伴们了解汉诺塔的历史,勾起孩子们的学习兴趣,让伙伴们更加热爱数学。

1、讲关于汉诺塔的故事:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。

印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。

不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。

僧侣们预言,当所有的金片都从梵天穿好的那根针上移2、告诉伙伴们游戏规则:以三个环为例说明:(一)先让伙伴们自己观察有几个柱子,有几个盘,并且盘是怎么排列的?答:有三根相邻的柱子,第一根柱子上从下到上放着3个不同大小的圆盘,并且顺序是由大到小依次叠放。

(二)分别为这3个相邻的柱子编号A柱、B柱、C柱;在为这3个圆盘编号盘1、盘2、盘3。

让伙伴们自己动脑想想:如何要把A柱上的3个盘子一个一个移动到C柱上,并且每次移动同一根柱子上都必须保持大点的盘子在下,小点的盘子在上。

最后也要使移动到C 柱的圆盘从下到上按照盘3,2,1金字塔的形状排列。

(三)带领伙伴们一起动手操作:(1)、盘1移动到C柱。

hannoi塔java课程设计

hannoi塔java课程设计

hannoi塔java课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握Hannoi塔问题的算法原理及其Java实现;技能目标要求学生能够运用Java编程解决简单的算法问题;情感态度价值观目标培养学生的逻辑思维能力、问题解决能力和团队合作精神。

通过本课程的学习,学生将了解Hannoi塔问题的背景及其算法实现,能够运用Java编程解决相关问题。

同时,培养学生独立思考、创新解决问题的能力,提高他们对计算机科学的兴趣和热情。

二、教学内容教学内容主要包括Hannoi塔问题的算法原理、Java编程基础及其在解决Hannoi塔问题中的应用。

1.Hannoi塔问题的算法原理:介绍Hannoi塔问题的定义、解决方法及其数学原理。

2.Java编程基础:讲解Java编程的基本语法、数据结构、控制语句和函数。

3.Hannoi塔问题的Java实现:引导学生运用Java编程实现Hannoi塔问题的解决方案,并进行调试和优化。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:教师讲解Hannoi塔问题的算法原理、Java编程基础及相关知识。

2.讨论法:学生分组讨论Hannoi塔问题的解决方案,培养团队合作精神和独立思考能力。

3.案例分析法:分析典型的Hannoi塔问题案例,引导学生运用Java编程解决问题。

4.实验法:学生动手实践,编写Java程序实现Hannoi塔问题的解决方案。

四、教学资源教学资源包括教材、参考书、多媒体资料和实验设备。

1.教材:选用权威、实用的Java编程教材,为学生提供系统的学习资料。

2.参考书:提供相关的算法书籍,帮助学生深入了解Hannoi塔问题的算法原理。

3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高学生的学习兴趣。

4.实验设备:提供计算机、网络等实验设备,保障学生实践教学活动的顺利进行。

汉诺塔游戏课程设计

汉诺塔游戏课程设计

汉诺塔游戏课程设计一、课程目标知识目标:1. 学生能理解汉诺塔游戏的起源、规则及数学原理。

2. 学生能掌握递归算法的基本概念及其在汉诺塔游戏中的应用。

3. 学生能运用数学归纳法推导汉诺塔游戏的步数与盘子数之间的关系。

技能目标:1. 学生能够运用所学知识,独立设计并解决汉诺塔游戏的不同层次问题。

2. 学生能够通过小组合作,提高问题解决能力和团队协作能力。

3. 学生能够运用信息技术工具,进行汉诺塔游戏模拟和数据分析。

情感态度价值观目标:1. 学生对数学产生兴趣,认识到数学与游戏的紧密联系,提高学习数学的积极性。

2. 学生在游戏中培养逻辑思维能力和创新精神,增强自信心和自主探究意识。

3. 学生通过合作与交流,培养团队精神,学会尊重他人,形成积极向上的人生态度。

课程性质:本课程以汉诺塔游戏为载体,结合数学知识和算法,培养学生的逻辑思维能力、问题解决能力和团队协作能力。

学生特点:五年级学生具有一定的数学基础和逻辑思维能力,对游戏具有浓厚兴趣,但可能对递归算法等抽象概念理解有限。

教学要求:结合学生特点,教师需采用生动有趣的教学方法,引导学生主动探究,注重培养学生的实践操作能力和团队协作精神。

通过本课程的学习,使学生将所学知识应用于实际情境,提高学生的综合素养。

二、教学内容1. 汉诺塔游戏背景介绍:包括汉诺塔的起源、发展及其在数学游戏中的地位。

相关教材章节:数学游戏与趣味数学2. 汉诺塔游戏规则及数学原理:讲解汉诺塔的游戏规则,引导学生发现汉诺塔移动盘子过程中的数学原理。

相关教材章节:组合数学基本概念3. 递归算法及其在汉诺塔游戏中的应用:介绍递归算法的概念,通过实例演示递归算法在汉诺塔游戏中的运用。

相关教材章节:算法与程序设计4. 汉诺塔游戏步数与盘子数之间的关系:运用数学归纳法,推导汉诺塔游戏中盘子数与步数之间的关系。

相关教材章节:数学归纳法5. 汉诺塔游戏实践操作:组织学生进行汉诺塔游戏实践,培养学生动手操作能力和问题解决能力。

汉诺塔牌课课程设计

汉诺塔牌课课程设计

汉诺塔牌课课程设计一、教学目标本课程的学习目标包括以下三个方面:1.知识目标:通过本课程的学习,学生需要掌握汉诺塔牌的基本概念、规则和策略,了解其背后的数学原理和逻辑思维。

2.技能目标:学生能够运用汉诺塔牌的规则和策略进行游戏,提高解决问题的能力,培养逻辑思维和抽象思维。

3.情感态度价值观目标:通过汉诺塔牌的学习和游戏,学生能够培养团队合作意识,增强自信心,提高自我认知和自我激励能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.汉诺塔牌的基本概念和规则,包括牌的种类、牌面数值和游戏的目标。

2.汉诺塔牌的策略和技巧,包括牌序的安排、牌型的组合和游戏的节奏控制。

3.汉诺塔牌的数学原理和逻辑思维,包括排列组合、递归思想和贪心算法。

4.汉诺塔牌的游戏实践,包括个人游戏和团队游戏的规则和技巧。

三、教学方法为了实现本课程的教学目标,我们将采用以下几种教学方法:1.讲授法:通过讲解汉诺塔牌的基本概念、规则和策略,使学生了解和掌握相关知识。

2.案例分析法:通过分析典型的汉诺塔牌游戏案例,使学生理解和运用相关策略和技巧。

3.实验法:通过实际操作汉诺塔牌游戏,使学生锻炼和提高解决问题的能力。

4.小组讨论法:通过团队合作和讨论,使学生培养团队合作意识和沟通交流能力。

四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选择一本适合学生年级和知识深度的汉诺塔牌教材,作为学生学习的主要参考资料。

2.多媒体资料:制作相关的PPT、视频等多媒体资料,以便于学生更直观地理解和掌握知识。

3.实验设备:准备足够的汉诺塔牌游戏道具,以便于学生进行实际操作和实验。

4.在线资源:利用互联网资源,提供相关的学习、论坛和在线游戏,以便于学生自主学习和交流。

五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:通过观察学生在课堂上的参与程度、提问回答和小组讨论的表现,评估学生的学习态度和积极性。

汉诺塔课程设计

汉诺塔课程设计

攀枝花学院课程设计题目:汉诺塔演示程序设计院(系):年级专业:姓名:学号:指导教师:二〇〇九年十二月十四日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书注:任务书由指导教师填写。

课程设计(论文)指导教师成绩评定表摘要汉诺塔(又称河内塔)问题是一个古典的数学问题,是一个用递归方法解题的典型例子。

问题是这样的:开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。

利用计算机图形学进行汉诺塔演示程序设计,是利用C语言绘图函数实现汉诺塔的递归算法图形界面演示过程。

通过C语言实现图形学的绘图,程序控制,以及区域填充,并根据汉诺塔的算法原理实现大小不同的盘子移动的全过程演示。

关键词汉诺塔,变换矩阵,种子填充算法,递归调用目录摘要 (I)1 需求分析 (1)1.1 需求概述 (1)1.2 需求环境 (1)1.3 功能描述 (2)2 概要设计 (3)2.1 程序功能模块 (3)2.2 程序流程图 (3)2.3 数据结构的设计 (4)3 详细设计 (5)3.1 程序初始化 (5)3.1.1 代码功能 (5)3.1.2 功能实现代码 (5)3.2 盘块的移动过程 (5)3.2.1代码功能 (5)3.2.2 功能实现代码 (5)3.3 递归函数 (6)3.3.1 流程图 (6)3.3.2 功能实现代码 (7)4 测试与运行 (8)结束语 (9)参考文献 (10)1 需求分析1.1 需求概述汉诺塔演示程序设计是计算机图形学中图形变换的内容之一。

而图形学中的图形变换的概念是由简单图形生成复杂图形,可用二维图形表示三维形体,甚至可以对静态图形经过快速变换而获得图形的动态显示效果。

其任务是研究各点坐标之间的变化规律。

而本次课程设计就是利用C语言以及图形函数实现汉诺塔的递归算法来进行其盘块移动的全过程显示。

汉诺塔教案

汉诺塔教案

汉诺塔教案一、教学目标1.了解汉诺塔的起源和规则;2.掌握汉诺塔的基本解法;3.培养学生的逻辑思维和耐心。

二、教学内容1. 汉诺塔的起源和规则汉诺塔是一种益智游戏,起源于印度。

传说中,有一座印度寺庙里有三根针,最底下的一根针上有64个盘子,盘子大小不一,大的在下,小的在上。

寺庙里的僧人们每天都要把这64个盘子从最底下的一根针上移到另一根针上,中间可以借助第三根针。

据说完成这个任务需要几个世纪的时间。

汉诺塔的规则很简单,即每次只能移动一个盘子,且大盘子不能放在小盘子上面。

2. 汉诺塔的基本解法汉诺塔的基本解法是递归。

假设有n个盘子需要从A柱移动到C柱,可以分为以下三步:1.将A柱上面的n-1个盘子移动到B柱;2.将A柱上的最后一个盘子移动到C柱;3.将B柱上的n-1个盘子移动到C柱。

具体实现可以使用递归函数,代码如下:def hanoi(n, a, b, c):if n ==1:print(a, "->", c)else:hanoi(n-1, a, c, b)print(a, "->", c)hanoi(n-1, b, a, c)3. 汉诺塔的实践操作让学生自己动手操作汉诺塔,可以帮助他们更好地理解汉诺塔的规则和解法。

可以使用实物或者虚拟的汉诺塔游戏进行操作。

三、教学过程1. 导入介绍汉诺塔的起源和规则,引出汉诺塔的基本解法。

2. 讲解讲解汉诺塔的基本解法,包括递归函数的实现。

3. 操作让学生自己动手操作汉诺塔,可以分为以下几个步骤:1.准备三个柱子和若干个盘子,按照大小顺序从下往上依次放置在A柱上;2.使用递归函数将A柱上的所有盘子移动到C柱上;3.检查移动过程是否符合规则。

4. 总结总结汉诺塔的规则和基本解法,强调递归思想的重要性。

四、教学评价1.学生是否了解汉诺塔的起源和规则;2.学生是否掌握汉诺塔的基本解法;3.学生是否能够独立操作汉诺塔;4.学生的逻辑思维和耐心是否得到了培养。

汉诺塔课程设计

汉诺塔课程设计

汉诺塔课程设计一、课程目标知识目标:1. 学生能理解汉诺塔的起源、规则及数学原理;2. 学生掌握汉诺塔问题解决的递归思想,并能运用到其他数学问题中;3. 学生能运用数学符号和表达式描述汉诺塔的移动过程。

技能目标:1. 学生能够运用所学知识解决汉诺塔问题,提高逻辑思维和问题解决能力;2. 学生通过合作探究,培养团队协作能力和沟通表达能力;3. 学生学会利用递归思想分析问题,提高数学建模能力。

情感态度价值观目标:1. 学生在探索汉诺塔问题的过程中,培养对数学的兴趣和好奇心,激发学习热情;2. 学生通过解决汉诺塔问题,体验成功的喜悦,增强自信心;3. 学生在合作探究中,学会尊重他人意见,培养包容、谦逊的品质;4. 学生认识到数学在现实生活中的应用,理解数学的价值。

课程性质:本课程为数学学科拓展课程,旨在通过汉诺塔问题的探究,培养学生的逻辑思维、问题解决和团队协作能力。

学生特点:学生处于初中阶段,具有一定的数学基础和逻辑思维能力,对新鲜事物充满好奇心,喜欢探索和挑战。

教学要求:教师需结合学生的特点,设计有趣、富有挑战性的教学活动,引导学生主动参与,充分调动学生的积极性和主动性。

在教学过程中,注重培养学生的逻辑思维、问题解决和团队协作能力,同时关注学生的情感态度价值观的培养。

通过本课程的学习,使学生能够在知识和能力上得到全面提升。

二、教学内容1. 汉诺塔的起源与规则:介绍汉诺塔的背景、发展历程及基本规则,使学生了解汉诺塔问题的历史背景和基本操作。

相关教材章节:数学游戏与趣味数学2. 汉诺塔的数学原理:讲解汉诺塔问题中的递归思想,引导学生发现规律,理解汉诺塔问题背后的数学原理。

相关教材章节:递归与数学问题3. 汉诺塔问题解决方法:教授解决汉诺塔问题的具体方法,如递归法、迭代法等,帮助学生掌握解决问题的技巧。

相关教材章节:算法与程序设计4. 汉诺塔问题拓展与应用:引导学生将汉诺塔问题与其他数学问题相联系,培养学生举一反三的能力。

校本课程《汉诺塔游戏》【教学设计】

校本课程《汉诺塔游戏》【教学设计】

校本课程《汉诺塔游戏》【教学设计】.doc教学设计:汉诺塔游戏研究内容:数学游戏“汉诺塔”第一课时研究目标:1.了解汉诺塔游戏的传说和基本规则。

2.在游戏中掌握汉诺塔游戏的基本规则,初步发现游戏中的规律。

3.发展归纳推理能力和逻辑思维能力。

4.体会与他人合作获得更多的成功体验。

研究重点:掌握汉诺塔游戏的基本规则,发现游戏中的规律。

研究难点:发展归纳推理能力和逻辑思维能力。

研究过程:课前活动:1.引入话题,了解学生喜欢的游戏。

2.播放黑猩猩玩游戏的视频,引出汉诺塔游戏。

一、认识XXX:1.介绍XXX的来历和相关信息。

2.介绍汉诺塔的各部分,包括托盘和三根柱子。

3.介绍汉诺塔游戏的规则,包括从一边到另一边、一次只能移动一个金片和大金片不能放在小金片上面。

二、动手实践玩游戏:1.从一个圆片开始研究,掌握游戏规则。

2.探究两个圆片的玩法,发现规律。

3.逐步增加圆片数量,练归纳推理和逻辑思维能力。

4.在合作中获得成功体验。

教学设计:汉诺塔游戏研究内容:数学游戏“汉诺塔”第一课时研究目标:1.了解汉诺塔游戏的传说和基本规则。

2.在游戏中掌握汉诺塔游戏的基本规则,初步发现游戏中的规律。

3.发展归纳推理能力和逻辑思维能力。

4.体会与他人合作获得更多的成功体验。

研究重点:掌握汉诺塔游戏的基本规则,发现游戏中的规律。

研究难点:发展归纳推理能力和逻辑思维能力。

研究过程:课前活动:1.引入话题,了解学生喜欢的游戏。

2.播放黑猩猩玩游戏的视频,引出汉诺塔游戏。

一、认识XXX:1.介绍XXX的来历和相关信息。

2.介绍汉诺塔的各部分,包括托盘和三根柱子。

3.介绍汉诺塔游戏的规则,包括从一边到另一边、一次只能移动一个金片和大金片不能放在小金片上面。

二、动手实践玩游戏:1.从一个圆片开始研究,掌握游戏规则。

2.探究两个圆片的玩法,发现规律。

3.逐步增加圆片数量,练归纳推理和逻辑思维能力。

4.在合作中获得成功体验。

请在A柱上放置两个圆片,并将它们移动到C柱上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学 号:200840420149课 程 设 计题 目汉诺塔 教 学 院 计算机学院 专 业 计算机 班 级 网络技术姓名 指导教师2010 年 12 月 17 日课程设计任务书2009 ~2010 学年第一学期学生姓名:专业班级:网络技术指导教师:工作部门:计算机学院一、课程设计题目汉诺威塔二、课程设计内容(含技术指标)1.在移动盘子的每一步骤,形象直观地显示各针上的盘子。

2.考虑到学“VC 语言”课程的学生同时学习了“数据结构”课程,所以用灵活的数据结构解决汉诺威塔问题,灵活的处理数据结构中的经典问题。

3.使用VC++,因用面向对象的方法去处理数据结构已经是当今的潮流。

三、进度安排1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2. 完成最低要求:实现5层汉诺威塔的调整过程;3.进一步要求:直至实现n=9时的情况。

四、基本要求1.界面友好,函数功能要划分好2.总体设计应画流程图3.程序要加必要的注释4.要提供程序测试方案5.程序一定要经得起测试,宁可功能少一些,也要能运行起来。

教研室主任签名:2010年12 月 17 日目录1、概述 (3)2、设计目的 (4)3、问题分析 (4)4、逻辑设计 (5)5、流程图 (5)6、程序代码: (6)7、程序调试与测试 (9)8、结果分析 (12)9、总结 (13)一、概述数据结构是计算机学科非常重要的一门专业基础理论课程,要想编写针对非数值计算问题的高质量程序,就必须要熟练的掌握这门课程设计的知识。

另外,他与计算机其他课程都有密切联系,具有独特的承上启下的重要位置。

拥有《数据结构》这门课程的知识准备,对于学习计算机专业的其他课程,如操作系统、数据库管理系统、软件工程的都是有益的。

二、设计目的《数据结构课程设计》课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化与提高。

因此,要求学生能综合应用所学的知识,设计与制作出具有较复杂的应用系统,并且在实验的基本技能方面进行一次全面的训练。

1.使学生能够较全面地巩固和应用课堂所学的基本理论和程序设计方法,能够较熟练的完成数据结构程序的设计与调试。

2.培养学生综合运用所学知识独立完成数据结构程序员课题的能力。

3.培养学生用于探索、严谨推理、实事求是、有错必改,用时间来检验理论,全方位考虑问题等科学技术人员应具有的素质。

4.提高学生对工作认真负责额、一丝不苟,对同学团结友爱,协作攻关的基本素质。

5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。

6.对学生掌握知识的深度。

运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。

三、问题分析任务:有三个柱子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)printf(" %d. %c→%c ",i+1,x,z);这个最简单,如果只有一个盘子(n=1),那么只要从x柱子直接移动到z柱子就可以了。

不需要中间以哦的那个其他的盘子。

如果要移动的盘子不止一个,那么就要采取一定的策略。

这个策略就是先把上面的n-1个盘子移动到中间的柱子,也就是y,然后把最地下一个盘子移动到z柱子,然后再把中间柱子y上的盘子通过哦a柱子移动到z柱子上。

else{movedishes(n-1,x,z,y);//把上面的n-1个盘子通过z柱子移动到y柱子上,这样才能把最后一个盘子移动到z柱子上。

printf(" %d. %c→%c ",i+1,x,z); //输出这次移动movedishes(n-1,y,x,z); //然后再把刚才移动出来放在y柱子上的n-1个盘子移动到z柱子上。

}}五、流程图开始输入m(m<=9)输出结果1、是是否继续?2、否结束六、程序代码:#include<stdio.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==0)/*每行显示七个*/printf("\n");}else{movedishes(n-1,x,z,y);/*把a杆上n-1个盘子设法借助c杆移动到b杆*/printf(" %d. %c→%c ",i+1,x,z);/*输出步骤*/i++;if(i%7==0)printf("\n");movedishes(n-1,y,x,z); /*把b杆上的n-1个盘子借助a杆移动到c杆*/}}main(){int m,j=1;/*m记录需要移动盘子的数目,j记录循环条件*/printf("_________________________________欢迎使用本系统______________________________\n");printf(" | | |\n");printf(" | | | \n");printf(" | | | \n");printf(" | | | \n");printf(" | | | \n");printf(" a | b | c | \n");printf(" | | | \n");printf(" | | | \n");printf(" | | | \n");printf(" _______________ ________________ _______________ \n");while(j==1){printf(" 请输入a上盘子数:\n");scanf("%d",&m);printf(" 移动顺序:\n");movedishes(m,'a','b','c');printf("\n 是否继续:\n1.是\n2.否\n");scanf("%d",&j);while(j!=1&&j!=2){printf("输入错误,请重新输入:");printf("\n 是否继续:\n1.是\n2.否\n");scanf("%d",&j);}i=0;/*每次计算完重新置1*/}printf(" 谢谢使用,再见!\n");}七、程序调试与测试1、程序调试1)使用Microsoft visual c++ 编辑软件进行源程序的编写。

2)使用Microsoft visual c++软件进行编译,步骤:单击“组建”选择“编译”。

3)使用Microsoft visual c++运行程序并调试,步骤:单击“组建”选择“执行”。

2、运行及程序界面1)编辑程序界面图(一)图(二)图(三)2)执行程序及运行后界面图(一)图(二)3、运行过程图(一)八、结果分析_________________________________欢迎使用本系统______________________________ | | || | || | || | || | |a |b |c || | || | || | |_______________ ________________ _______________请输入a上盘子数:6移动顺序:1. a→b2. a→c3. b→c4. a→b5. c→a6. c→b7. a→b8. a→c 9. b→c 10. b→a 11. c→a 12. b→c 13. a→b 14. a→c15. b→c 16. a→b 17. c→a 18. c→b 19. a→b 20. c→a 21. b→c22. b→a 23. c→a 24. c→b 25. a→b 26. a→c 27. b→c 28. a→b29. c→a 30. c→b 31. a→b 32. a→c 33. b→c 34. b→a 35. c→a36. b→c 37. a→b 38. a→c 39. b→c 40. b→a 41. c→a 42. c→b43. a→b 44. c→a 45. b→c 46. b→a 47. c→a 48. b→c 49. a→b50. a→c 51. b→c 52. a→b 53. c→a 54. c→b 55. a→b 56. a→c57. b→c 58. b→a 59. c→a 60. b→c 61. a→b 62. a→c 63. b→c是否继续:1.是2.否请输入a上盘子数:8移动顺序:1. a→b2. a→c3. b→c4. a→b5. c→a6. c→b7. a→b8. a→c 9. b→c 10. b→a 11. c→a 12. b→c 13. a→b 14. a→c15. b→c 16. a→b 17. c→a 18. c→b 19. a→b 20. c→a 21. b→c22. b→a 23. c→a 24. c→b 25. a→b 26. a→c 27. b→c 28. a→b29. c→a 30. c→b 31. a→b 32. a→c 33. b→c 34. b→a 35. c→a36. b→c 37. a→b 38. a→c 39. b→c 40. b→a 41. c→a 42. c→b43. a→b 44. c→a 45. b→c 46. b→a 47. c→a 48. b→c 49. a→b50. a→c 51. b→c 52. a→b 53. c→a 54. c→b 55. a→b 56. a→c57. b→c 58. b→a 59. c→a 60. b→c 61. a→b 62. a→c 63. b→c64. a→b 65. c→a 66. c→b 67. a→b 68. c→a 69. b→c 70. b→a71. c→a 72. c→b 73. a→b 74. a→c 75. b→c 76. a→b 77. c→a78. c→b 79. a→b 80. c→a 81. b→c 82. b→a 83. c→a 84. b→c85. a→b 86. a→c 87. b→c 88. b→a 89. c→a 90. c→b 91. a→b92. c→a 93. b→c 94. b→a 95. c→a 96. c→b 97. a→b 98. a→c99. b→c 100. a→b 101. c→a 102. c→b 103. a→b 104. a→c 105. b→c106. b→a 107. c→a 108. b→c 109. a→b 110. a→c 111. b→c 112. a→b113. c→a 114. c→b 115. a→b 116. c→a 117. b→c 118. b→a 119. c→a120. c→b 121. a→b 122. a→c 123. b→c 124. a→b 125. c→a 126. c→b127. a→b 128. a→c 129. b→c 130. b→a 131. c→a 132. b→c 133. a→b134. a→c 135. b→c 136. b→a 137. c→a 138. c→b 139. a→b 140. c→a141. b→c 142. b→a 143. c→a 144. b→c 145. a→b 146. a→c 147. b→c148. a→b 149. c→a 150. c→b 151. a→b 152. a→c 153. b→c 154. b→a155. c→a 156. b→c 157. a→b 158. a→c 159. b→c 160. b→a 161. c→a162. c→b 163. a→b 164. c→a 165. b→c 166. b→a 167. c→a 168. c→b169. a→b 170. a→c 171. b→c 172. a→b 173. c→a 174. c→b 175. a→b176. c→a 177. b→c 178. b→a 179. c→a 180. b→c 181. a→b 182. a→c183. b→c 184. b→a 185. c→a 186. c→b 187. a→b 188. c→a 189. b→c190. b→a 191. c→a 192. b→c 193. a→b 194. a→c 195. b→c 196. a→b197. c→a 198. c→b 199. a→b 200. a→c 201. b→c 202. b→a 203. c→a204. b→c 205. a→b 206. a→c 207. b→c 208. a→b 209. c→a 210. c→b211. a→b 212. c→a 213. b→c 214. b→a 215. c→a 216. c→b 217. a→b218. a→c 219. b→c 220. a→b 221. c→a 222. c→b 223. a→b 224. a→c225. b→c 226. b→a 227. c→a 228. b→c 229. a→b 230. a→c 231. b→c232. b→a 233. c→a 234. c→b 235. a→b 236. c→a 237. b→c 238. b→a239. c→a 240. b→c 241. a→b 242. a→c 243. b→c 244. a→b 245. c→a246. c→b 247. a→b 248. a→c 249. b→c 250. b→a 251. c→a 252. b→c253. a→b 254. a→c 255. b→c是否继续:1.是2.否谢谢使用,再见!九、总结C语言是一种强有力的语言,一项实用性很强的技术,它拥有很多算法便于我们根据个人的需要灵活的编制高级语言程序,随心所欲地控制程序运行。

相关文档
最新文档