53 冒泡排序法.ppt

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

(续) 3.可以将外部变量的作用域扩充到其它文件。这时在需要用到这些外部变量的文件中用extern对变量进行声明即可。 外部变量的副作用 外部变量为公共信息的一种载体,虽然给程序设计带来一些方便,但也会产生一些副作用。在程序设计中应有限制地使用外部变量。 外部变量的副作用主要表现: 占用固定的存储空间,降低了内存的利用率; 增加函数(或程序)之间的联系,降低了模块的独立性。 存储类别小结 对一个数据的定义需要指定两种属性: 数据类型:int、float、char、double、long、、short、unsigned 存储类别:static、auto、register、extern 理解一个数据从两方面: 作用域:全局/局部 生存期:程序块/整个程序 作用域: 局部变量 auto变量,即动态局部变量(离开函数,变量消失) static局部变量(离开函数,变量仍保留) register变量(离开函数,变量消失) 形式参数(或定义为auto或register变量) 全局变量 静态外部变量(只限本文件引用) 外部变量(即非静态的外变量,允许其它文件引用) 生存期: 动态存储 auto变量(本函数内有效) register变量(本函数内有效) 形式参数 静态存储 静态局部变量(函数内有效) 静态外部变量(本文件内有效) 外部变量(其它文件可以引用) 变量存储位置: 内存中静态存储区 静态局部变量 静态外部变量(函数外部静态变量) 外部变量(可以为其它文件引用) 内存中动态存储区 auto变量 形式参数 CPU中的寄存器:register变量 static的作用: static对局部变量和全局变量的作用不同。 对于局部变量来说,它使变量由动态存储方式改变为静态存储方式。 对全局变量来说,它使变量局部化(局部于本文件),但仍为静态存储方式。 从使用域看,凡有static说明的,其作用域是局限的,或者是局限于本函数内(静态局部变量),域者局限于本文件内(静态外部变量)。 extern作用: extern是变量的说明或声明符号,不是变量的定义符号。 它声明变量是在本函数或本文件以外定义的,本函数或本文件可以使用这些变量。 内部函数和外部函数 内部函数 如果一个函数只能被本文件中的函数调有,它称为内部函数。 在定义内部函数时,在函数名和函数类型的前面加static。 static 类型标识符 函数名(形参表) 例:static fun( int a, int b ) 外部函数 在定义函数时,如果在函数首部的最左端冠以关键字extern,则表示此函数是外函数,可供其它文件调用。 如: extern int func( int a, int b ) C语言规定,如果在定义函数时省略extern,则隐含为外部函数。 (续) 在需要调用此函数的文件中,用extern声明所用的函数是外部函数。 递 推 递 推 递推是计算机数值计算中的一个重要算法,可以将复杂的运算化为若干重复的简单运算,充分发挥计算机长于重复处理的特点。 任务3 A、B、C、D、E 五人合伙夜间捕鱼,凌晨时都疲惫不堪,各自在河边的树丛中找地方睡着了。日上三竿,A第一个醒来,他将鱼平分作五份,把多余的一条扔回湖中,拿自己的一份回家去了。B第二个醒来,也将鱼平分为五份,扔掉多余的一条,只拿走自己的一份。接着 C、D、E 依次醒来,也都按同样的办法分鱼。问五人至少合伙捕到多少条鱼?每个人醒来后看到的鱼数是多少条? 解题思路 假定A、B、C、D、E 五人的编号分别为1、2、3、4、5,整数数组 fish[k] 表示第 k 个人所看到的鱼数。fish[1] 表示A所看到的鱼数,fish[2] 表示 B 所看到的鱼数…… fish[1] A所看到的鱼数,合伙捕到鱼的总数 fish[2]=(fish[1]-1)*4/5 B所看到的鱼数 fish[3]=(fish[2]-1)*4/5 C所看到的鱼数 fish[4]=(fish[3]-1)*4/5 D所看到的鱼数 fish[5]=(fish[4]-1)*4/5 E所看到的鱼数 写成一般式 fish [ i ] = ( fish [ i - 1 ] – 1 ) * 4 / 5 i = 2, 3, …,5 这个公式可用于知 A 看到的鱼数去推算 B 看到的,再推算 C 看到的,…….。现在要求的是 A 看到的,能否倒过来,先知 E 看到的再反推 D 看到的,……,直到A看到的。为此将上式改写为: fish[ i-1 ] = fish[ i ] * 5 / 4 +1 i = 5, 4,…,2 分析上述公式 当 i = 5 时,fish[ 5 ] 表示 E 醒来所看到的鱼数,该数应满足被5整除后余1

文档评论(0)

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

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

1亿VIP精品文档

相关文档