C语言程序设计项目教程项目三.pdf

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言言程序序设计项目教教程 项目三共分为两个任务 项目三 算法——程序设计的灵魂 任务一 了解什么是算法 任务二 掌握算法的表示方法 项目拓展 算法的复杂度 任务一 了解什么是算法 任务说明任务说明 在本任务中我们将了解算法的概念和特性。 预备知识 一、什么是算法 二、算法的特性 为解决一个问题而采取的方法和步骤就称为算法。计算机能够 执行的算法可分为两大类: 数值运算算法 主要用于求解数值主要用于求解数值,如求复杂算式的值如求复杂算式的值、求方求方 程的根等; 非数值运算算法 主要用于事务管理领域主要用于事务管理领域,如图书检索如图书检索、公交汽公交汽 车车辆调度等。 二、算法的特性 ((11))有穷性有穷性 (2)确定性 (3)有效性 (4)存在零个或多个输入 (5)存在若干输出结果 任务实施——汉诺塔问题 汉诺塔汉诺塔 ((TowersTowers ofof HanoiHanoi, 下图为模拟汉诺下图为模拟汉诺 Hanoi为越南首都河内)也称河内之塔。 塔问题的模型玩具 它源于印度源于印度一个古个古老传说传说:大梵天创大梵天创 造世界的时候做了三根金刚石柱子, 在其中一根柱子上从下往上按照大小 顺序摞着64片黄金圆盘。大梵天命令 婆罗门把圆盘从下面开始按大小顺序 重新摆放在另重新摆放在另一根柱子上根柱子上。并且规定并且规定, 在小圆盘上不能放大圆盘,在三根柱 子之间一次只能移动一个圆盘。当盘 子全数搬运完毕之时,也就是世界末 日来临之时。 在本任务中我们就来编写算法解决汉诺塔问题,这里将柱子标为A、 B、、C,,要由要由A搬至搬至C,,假设假设A柱上的盘数为柱上的盘数为n,,n由用户输入由用户输入。 任务分析任务分析 汉诺塔问题是典型的递归调用问题。当n=1时,直接将盘子从A移 动到动到CC即可即可。将将nn ((nn>>11))个盘子从个盘子从AA柱移动到柱移动到CC柱可以分为三个步骤柱可以分为三个步骤: ① 将n-1个盘子从A借助C移到B; ② 将最后一个盘子从A移到C; ③ 将n-1个盘子从B借助A移到C。 实施步骤 步骤步骤11 启动启动VisualVisual C++C++ 6.06.0,,新建一个新建一个C++C++源程序源程序,,在编辑区中输入在编辑区中输入 以下代码: #include#include stdiostdio.hh void hanoi(int n, char A, char B, char C) { if(n == 1) { printf(Move sheet %d from %c to %c\n, n, A, C); } else {{ hanoihanoi(n(n-1,1, A,A, C,C, B);B); printf(Move sheet %d from %c to %c\n, n, A, C); hanoi(n-1, B, A, C); } }} iint maiin()() { int n;; printf(请输入盘数:); scanf(%d, n); hanoihanoi(n(n, AA, BB, CC);); return 0; } 步骤2 编译、连接后执行程序,执行结果如下图所示。 (a)n=2时移动方法 (b)n=4时

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档