- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 用函数实现模块化程序设计;程序设计的艺术;?模块化程序设计的核心: 函数设计。
重要概念:
①把解决问题的方案设计成一个个独立的模块。
②程序通过调用模块功能来解决问题。
③这些模块通过函数来实现,又称为函数模块。
④每一个函数具有独立的功能,程序通过各模块之间的协调工作完成复杂的程序功能。;数学函数(1);数学函数(2);程序设计中的函数;用函数解决问题的要点;说明:
一个源程序文件由一个或多个函数组成。
一个C程序由一个或多个源程序文件组成。
C程序的???行从main函数开始,调用其他函数后流程回到main函数,在main函数中结束整个程序运行。
所有函数都是平行的,即函数定义时是互相独立的,一个函数并不从属于另一个函数。;一、C语言中的函数;二、函数的定义;例如,编写自定义函数abs_sum(),求两个任意整数的绝对值的和。
int abs_sum(int m, int n)
{
if (m0)
m=?m;
if(n0)
n=?n;
return (m+n);
}
或直接调用系统函数来实现:
int abs_sum(int m, int n)
{
return (abs(m)+abs(n));
}
注意:函数abs()的声明在头文件math.h。
;三、函数参数和函数的值;三、函数参数和函数的值;四、函数的调用;函数声明(函数原型)
?函数声明语句的形式:
[返回值类型符] 函数名([形参说明表]);
如:int abs_sun(int m, int n);
;
例1:编写程序,通过调用函数int abs_sum(int a,int b),求任意两个整数的绝对值的和。;五、函数中的变量;①局部变量:在函数内部或某个控制块的内部定义的变量。
?局部变量的作用域:函数内部。
?作用:增强了函数模块的独立性。
②全局变量:在函数外面定义的变量称为全局变量。
?全局变量的作用域:从该变量定义的位置开始,直到源文件结束。
?作用:在同一文件中,所有函数都可以引用全局变量。增强了各函数间数据的联系。;?局部变量和全局变量的作用域如图所示:
; 变量的存储类型
?变量的存储类型指的是变量的存储属性,它说明变量占用存储空间的区域。
?在内存中,供用户使用的存储区由程序区、静态存储区和动态存储区3部分组成。
?变量的存储类型:auto、register、static和extern4种。
① auto型变量存储在内存的动态存储区;
② register型变量保存在寄存器中;
③ static型和extern变量存储在静态存储器。;?局部变量的存储类型默认值为auto型。
?全局变量的存储类型默认值为extern型。
注意:
①一般情况下,常用auto型、register型定义局部变量。
② static型既可作为局部变量,又可作为全局变量。
作为局部变量时,局部变量的值将被保留,若定义时没有赋初值,则系统会自动为其赋0值;
作为全局变量时,其有效范围为它所在的源文件,其他源文件不能使用。
;六、数组作为函数参数;数组元素作函参;值传递;数组名作函参;地址传递;七、函数的嵌套调用;八、函数的递归调用;求最小公倍数;变量的作用范围(1);例3:设计一个函数:long fac(int n),用来计算正整数的阶乘,编写程序进行测试。
?算法的核心思想:对于任意正整数n,如果知道(n?1)!,则n!=n×(n?1)!。
可在函数中定义一个static型变量,用来保存每一次阶乘的计算结果。;变量的作用范围(2);函数的声明;不需声明的两种情况(1);不需声明的两种情况(2);1.按值传递;2.地址传递;形参和实参;值传递;函数的定义;对形参的说明;函数定义-----判断正误;主函数和其他函数;库函数和自定义函数;有参函数和无参函数;函数的返回值(1);函数的返回值(2);函数嵌套的形式;递归调用的形式(1);递归调用的形式(2);(1)具备递归出口。递归出口定义了递归的终止条件,当程序的执行使它得到满足时,递归执行过程便终止。有些问题的递归程序可能存在几个递归出口;(2)在不满足递归出口的情况下,根据所求解问题的性质,将原问题分解成若干子问题,这些子问题的结构与原问题的结构相同,但规模较原问题小。子问题的求解通过以一定的方式修改参数进行函数自身调用加以实现,然后将子问题的解组合成原问题的解。递归调用时,参数的修改最终必须保证递归出口得以满足。 ; 算法为: int Fact ( int n )
您可能关注的文档
- Windchill常用开发大全.ppt
- windows7操作系统基本操作(计算机应用基础).ppt
- WindowsCA_证书服务器配置.ppt
- Windows操作系统-体系结构(一).ppt
- Windows多域间的访问-格式.ppt
- WINDOWS命令系统工具使用.ppt
- windows域配置及管理.ppt
- wintriss-光学膜-完整版.ppt
- wire bonding 详细学习资料.ppt
- with d的用法及分词做状语.ppt
- 汽车发动机构造与原理课件:活塞环识别与检查更换.pptx
- 大学cad考试题库及参考答案.doc
- 幼儿园教师转行前的心理测评题目及参考答案.docx
- 做账实操-驾校会计处理分录 SOP.pdf
- 2026年福建理工大学单招《数学》考试历年机考真题集【全国通用】附答案详解.docx
- 2024-2025湖北省汉阳一中、江夏一中、洪山高中2024-2025学年高二下学期2月联考化学试卷.docx
- 就业领域测试题的答题技巧与策略.docx
- 做账实操-厨房燃气管道安装费账务处理 SOP.pdf
- 重庆市凤鸣山中学2025-2026学年八年级上学期期中考试道德与法治试卷(含答案).pdf
- 电商运营技巧实战题集及答案解析.docx
最近下载
- 2025年物业管理师职业技能鉴定考试(技能实操·中级/四级)题库 (1).docx
- 《机场周围区域飞机噪声环境标准》(征求意见稿)编制说明.pdf VIP
- 智慧树知到《职业生涯规划-体验式学习》章节测试答案.docx VIP
- 2025《以蚂蚁金服为例的盈利模式分析》12000字.docx VIP
- 16D702-6 城市照明设计与施工.pptx VIP
- 16D702-6 城市照明设计与施工.docx VIP
- 安全生产应急救援制度.docx VIP
- 生产安全事故报告及处理制度.docx VIP
- 6大数据导论-第6章-数据存储与管理(2020年秋季学期).ppt VIP
- 2025年物业管理师职业技能鉴定考试(技能实操·高级/三级)全真模拟题库五.docx
原创力文档


文档评论(0)