c5(函数).ppt

  1. 1、本文档共175页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c5(函数).ppt

* 程序设计基础 作者 鲍志斌 * 汉诺塔问题 在古印度贝纳雷斯(佛教圣地)的一座神庙内,有一座汉诺塔,上面插着三根钻石棒。其中一根上有翻天创世纪留下的64块金盘。 现在要移动这些金盘,规则为:将64块金盘从一个钻石棒移到另一个钻石棒上,每次只能移动一个金盘,大金盘不能压在小金盘上。 预言家说,这项工程完成时,就是世界末日之时。 * 程序设计基础 作者 鲍志斌 * 汉诺塔图示: A B C 目标:n 个金盘从A 移到 C 策略: 先将上面的n-1个金盘从A 移到B; 然后将第n个金盘从A 移到C; 递归处理B上的n-1个金盘; * 程序设计基础 作者 鲍志斌 * 目标:m 个金盘从A 移到 C? move(m, a, b, c) 步骤: 先将上面的m-1个金盘从A 移到B? move(m-1, a, c, b) 然后将第n个金盘从A 移到C ? move(1, a, c) ; 将B上的m-1个金盘从B 移到C? move(m-1, b, a, c) * 程序设计基础 作者 鲍志斌 * 汉诺塔问题; 确定函数头部: int move( int m, char a, char b, char c) 初始状态: 当m==1时,只剩下一个金盘,将a上的金盘移到c上; 否则: 调用 move(m-1, a, c, b); 移动一个金盘; 调用move(m-1, b, a, c) * 程序设计基础 作者 鲍志斌 * 汉诺塔移动的递归函数: void move( int m, char a, char b, char c) { if ( m==1) printf(“将第1号金盘从%c移动到%c \n”,a, c); else { move( m-1, a, c, b); printf(“将第%d号金盘从%c移动到%c \n”,m ,a, c); move( m-1,b, a, c);} } * 程序设计基础 作者 鲍志斌 * 汉诺塔移动的次数计算: 3个金盘:7次; 4个金盘:15次;… … n个金盘:2n-1次 移动64个金盘需要 264-1=18446744073709552000次 大约为:585亿年 * 程序设计基础 作者 鲍志斌 * 伪随机数的产生 计算机游戏中经常用到随机数,那么随机数是怎样产生的呢? 在ANSI C中有一个函数rand(),用来产生一个0~ RAND_MAX之间的伪随机数。在头文件stdlib.h中定义符号常量RAND_MAX。 编写程序时,用到一定范围内的随机数,计算公式为:n=a+rand()%b srand(seed):提供在种子seed下的随机数; srand(time(NULL)):提共随时间变化的随机数; * 程序设计基础 作者 鲍志斌 * srand((unsigned)time(t)): time_t t; void srand(unsigned seed); 它需要提供一个种子,如: srand(1); 直接使用1来初始化种子。常常使用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:00:00 GMT, January 1, 1970 到现在所持续的秒数,然后将time_t型数据转化为(unsigned)型在传给srand函数,即: srand((unsigned) time(t)); 还有一个经常用法,不需要定义time_t型t变量,即: srand((unsigned) time(NULL)); 直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的t数据。 * 程序设计基础 作者 鲍志斌 * 编译预处理 * 程序设计基础 作者 鲍志斌 * #include “文件包含”是指一个源文件可以将另一个源文件的全部内容包含进来。在编译预处理时, #include指令让预处理器用指定文件内容替换该语句。 格式: #include文件名:用于包含进系统头文件,它们存放在c/c++系统目录中的include文件夹内。遇到这种格式的#include语句,系统会到include文件夹内去寻找。 #include “文件名”:用于包含进用户定义的头文件。遇到这种格式的#include语句,系统会首先到本文件所在的路径中去找制定的包含文件,若找不到,再到include文件

文档评论(0)

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

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

1亿VIP精品文档

相关文档