教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

C语言课程设计#汉诺塔#

来源:网络收集 时间:2026-05-26
导读: C程序设计课程设计报告 汉诺塔动态演示 一 课题分析 1.1 设计要求 在Visual c++环境下编写汉诺塔的程序并运行出汉诺塔游戏。能够改变汉诺塔塔盘的数量。可以电脑演示移动过程,也可以人为移动,并且能够控制塔盘移动速度。实现汉诺塔的简单动态演示。 1.1.1

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字,全部文档内容请下载后查看。喜欢就下载吧 ……
C语言课程设计#汉诺塔#.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/442695.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)