- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
函数及其应用教程
Cprogram design;第9讲 函数;;引题:;9.1函数概述;2.模块化程序设计;9.1.2 函数分类;9.2 函数定义和调用;【例9-1】定义连续输出20个“*”字符的函数。;【例9-2】定义连续输出n个“*”字符的函数。;
double volume (double r,double h) //定义函数计算圆柱体的体积
{
double v;
v=PI*r*r*h; //计算圆柱体积
return v; //返回结果
} ;
;关于return语句的说明:
(1)return语句也可以使用如下格式:
return 表达式; return 3.14*r*r*h;
(2)函数可以有多个return语句,但不表示可以有多个返回值,执行到任何一个return语句都将返回到主调函数。
(3)函数的返回值只能有一个,它的类型可以是除数组以外的任何类型。;9.2.2 函数调用;函数定义与函数声明的区别;2.函数调用的形式和过程;【例9-5】调用函数pstar(),连续输出10行“*”字符,每行20个“*”字符。;【例9-6】编写函数在屏幕上输出直角三角形星号图形。;【例 9-7】 在主函数中输入两个数,通过调用函数求出最大值,并在主函数中输出。;3.函数调用的三种方式;【例 9-8】 利用求两个数的最大值函数max(),求出三个数的最大值。;【例 9-9】编写输出n个连续的任意字符的函数pstr(),调用该函数输出一个3行的“#”三角形图案。;9.3 函数的参数传递;9.3.1 传数值;【例9-10】 编写函数,对末尾数非0的正整数求它的逆序数。例如:在主函数中输入1478,通过调用函数求出逆序数8741,并在主函数中输出。;【例9-10】 编写函数,对末尾数非0的正整数求它的逆序数。例如:在主函数中输入1478,通过调用函数求出逆序数8741,并在主函数中输出。;【例9-11】 编写swap函数,完成交换两个变量值的功能。在主函数中输入两个变量x、y,检查在主函数中调用swap函数后,变量x、y的值是否交换。;程序说明:
swap函数无法真正实现两个变量值的交换。
实参和形参的变量虽然名字相同,但是存储空间不同。
传值调用的两个特点:
参数是非指针类型。
在被调函数中无法改变主调函数中的任何变量值。
;9.3.2 传地址;【例 9-12】输入n个整数存放在数组中,试通过函数调用的方法实现数组元素的逆序??放。;程序说明:
用数组名作函数实参实际上是将数组的首地址传给被调函数。
将数组的首地址传给被调函数后,形参数组与实参数组因具有相同的首地址而使用同一段存储单元。
函数inv()定义时,形参分别是int x[]和int n。
注意:
数组作函数形参时,数组的大小可以不出现在数组名后面的方括号内。;9.4 函数的嵌套调用和递归函数;9.4.1 函数的嵌套调用;【例 9-13】 编写程序,输入n,m,求组合数Cmn。Cmn =m!/(n!*(m-n)!)。要求定义两个函数fac和cmn分别计算阶乘和组合数。;程序说明:
(1)本程序中主函数main()调用了cmn()函数,cmn()函数又调用了fac()函数,在一个被调用的函数中再继续调用其他函数,形成了函数的嵌套调用。
(2)cmn()函数放在mian()之后,所以在main()函数开始有cmn()的函数声明。
;9.4.2 递归函数;2.函数的递归调用;【例9-14】用递归方法定义一个计算阶乘的函数。;n!=n×(n-1)!
(n-1)!=(n-1)×(n-2)!
(n-2)! ..
(n-3)!
5!
: 4!=4×3!
3!=3×2!
2!=2×1!
1!=1;程序说明:
在递归函数fac中,1!=1就是本递归函数的递归出口。
递归程序遵循了数学中对阶乘的定义
递归方法编写程序具有更清晰、可读性更好的优点
;【例9-15】用递归方法定义一个计算斐波那契(Fibonacci)数列的函数。;2015年5月18日;优点:
从编程角度来看,比较直观、精炼,逻辑清楚
符合人的思维习惯,逼近数学公式的表示
尤其适合非数值计算领域
hanoi
文档评论(0)