- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 结构化算法的实现 7.1 基本控制结构的C++实现 7.2 子算法设计与C++实现 7.3 递归与迭代 7.1 基本控制结构的C++实现 7.1.1 顺序结构的C++实现 7.1.2 分支结构的C++实现 7.1.3 循环结构的C++实现 7.1.4 复杂结构C++实现示例 7.1.1 顺序结构的C++实现 如果将程序中的每条分支语句和循环语句等复杂语句作为一个整体(一条复杂的语句),那么C++程序中物理上顺序排列的语句(除goto外)的执行顺序与其排列的前后顺序相同,它们之间构成了顺序结构,因此可以将C++的所有语法用于顺序结构算法的实现。 7.1.2 分支结构的C++实现 算法的分支结构在C++中可以采用if语句或switch语句来实现,其中switch语句主要用于实现多分支结构,这两种语句的结构与算法的分支结构具有很好的对应关系。 7.1.3 循环结构的C++实现 循环结构在C++程序中有多种实现方式,较好的风格是直到型循环使用do语句、当型循环使用while语句、步长型采用for语句。 7.1.4 复杂结构C++实现示例 7.1.4 复杂结构C++实现示例 7.2 子算法设计与C++实现 7.2.1 参数为普通类型的子算法 7.2.2 参数为指针的子算法 7.2.3 参数为引用的子算法 7.2.4 子算法设计与C++实现示例 7.2.1 参数为普通类型的子算法 子算法的参数为基本类型变量,调用子算法时的调用参数(实在参数)与子算法输入参数(形式参数)的形实结合采用传值方式,对应于C++函数定义及其调用的一般形式 。 7.2.1 参数为普通类型的子算法 算法描述及程序实现如下: 7.2.2 参数为指针的子算法 这类子算法的参数可以为基本类型指针、数组、函数指针等。 7.2.2 参数为指针的子算法 这类子算法的参数可以为基本类型指针、数组、函数指针等 。 7.2.3 参数为引用的子算法 引用类型参数使子算法定义形式与其调用形式之间具有直观的对应性,达到类似于传址调用的效果,引用类型参数可以提高数据传递效率。 7.2.3 参数为引用的子算法 7.2.4 子算法设计与C++实现示例 [例7.8] 设计一个班级成绩管理程序,该程序能够将每个学生的成绩按照总成绩由高到低的顺序存储,并可通过学号查寻学生的成绩。学生的成绩包括总成绩、语文成绩、数学成绩、化学成绩等。 7.2.4 子算法设计与C++实现示例 [例7.8] 7.2.4 子算法设计与C++实现示例 [例7.8] 7.3 递归与迭代 7.3.1 递归 7.3.2 迭代 7.3.3 应用示例 7.3.1 递归 分治法: 将复杂问题它分解成若干规模较小,复杂程度较低的小问题,在解决了所有小问题后,根据这些小问题之间的关系,将它们组合在一起,从而得到复杂问题的解。 7.3.1 递归 Factorial(0) Factorial(n) = n×Factorial(n-1) 7.3.1 递归 [例7.9] 编写程序求斐波那契(Fibonacci)数列的第n项。 问题的提出源于兔子问题:一对兔子每两月繁殖一对兔子,设第n月兔子对数F(n),则F(n)=F(n-1)+F(n-2),即第n月兔子对数等于上月兔子对数加上新生兔子对数,新生兔子对数正好是前个月兔子对数,故有: F(0)=0 F(1)=1 F(n)=F(n-1)+F(n-2) 7.3.2 迭代 long Factorial(int n) { int Vi_1=1, Vi=0; for(int i=1; i=n; i++) { Vi=i*Vi_1; Vi_1=Vi; } return Vi; } 7.3.3 应用示例 [例7.11] 编程显示汉诺(Hanoi)塔问题的解答。 7.3.3 应用示例 [例7.12] 求常系数n次多项式的值。 * * 学习目的: ① 理解算法控制结构与C++控制语句之间的关系; ② 能够根据结构化算法的PAD图编制C++程序; ③ 深入理解递归与迭代的原理与过程; ④ 熟练应用递归技术解决问题。 理想的算法设计应是语言无关的,可使用任何语言实现它,但是这将带来两个问题: 其一,常用算法描述工具的描述能力有限,有些问题采用具体程序 语言所提供的语法对算法进行描述效率会更高、结构更简单; 其二,由于算法与语言的脱离,在使用具体语言实现算法时,程序 与算法描述之间并不总是一一对应的,经常需要对算法进行适当调 整,以利于实现。 在结构化程序设计与实现时巧妙地应用高级语言所提供的各种便利的语法,能起到事半功倍的效果。 #include iostream.h void main() { double r, Peri_bottom, S_bottom, S_sid
文档评论(0)