资源描述:
《清华大学C语言教学课件(共16个PPT)第5个资料.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、清华大学C语言教学课件(共16个PPT)第5个//以下函数是被主程序调用的函数intSOP(m,l)//整型自定义函数,m,l为形参intm,l;//形参m,l为整型变量{//自定义函数体开始inti,sum;//整型变量i,sumsum=0;//初始化累加器for(i=1;i<=m;i=i+1)//计数循环(i){//循环体开始sum=sum+power(i,l);//累加}//循环体开始return(sum);//返回值sum给函数sop(n,k)}//自定义函数体结束//以下函数是被函数sop(n,k)调用的函数intpower(p,q)//整型自定义函数intp,q;/
2、/形参p,q为整型变量{//自定义函数体开始inti,product;//整型变量product=1;//初始化累乘器for(i=1;i<=q;i=i+1)//计数循环(i){//循环体开始(i)product=product*p;//累乘}//循环体结束(i)return(product);//累乘值product返回给power}//自定义函数体结束2自定义函数<数据类型><函数名>(<参数表>)例:intpower(p,n)power为函数名,要以英文字母开头。int是函数值的数据类型,这里是int(整型)。(p,n)括号中的p,n为函数的形式参数,形式参数也要定义其数据
3、类型。函数定义的一般格式:<数据类型><函数名>(<参数表>)<参数说明;>{<说明语句><执行语句>}为了突出重点,先学会基本东西,省略掉一些事情先不讲。31、形式参数是在定义函数时放在函数名后括号中的参数。在未进行函数调用时,并不对形式参数分配内存单元。在发生函数调用时,立刻给形式参数分配内存单元。调用结束后,释放掉行参所占的内存单元。2、因此,形参变量属于局部变量,其作用域在它所在的函数体内。3、在定义函数的时候,必须指定形参变量的类型,如何指定?有二种方法:形式参数与实在参数(1)intpower(p,n)intp,n;{……}(2)intpower(intp,intn
4、){……}有些编译系统不认识第(2)种形式44、实在参数是一个具有确定值的表达式。函数在调用时,将实在参数赋给形式参数。比如,主函数调用SOP(n,k),这时,n,k为实在参数,n的值为6,k的值为4。在被调用函数定义中,intSOP(m,l)中的m,l为形式参数,在SOP被调用时,系统给m,l这两个形式参数分配了内存单元。之后,n的值6赋给m,k的值4赋给l。实在参数的个数及类型应与形式参数一致。赋值时前后对应关系不会改变。下面画出主函数与SOP函数,调用与被调用时参数传递关系:5主函数执行下述语句时,printf(“%d”,SOP(n,k));传值给被调用函数intSO
5、P(m,l)n的值6传给m,k的值4传给l。6和4为实在参数,m和l为形式参数。被调用函数在其形式参数被赋值之后,开始执行函数体,先是让累加器初始化为0(sum=0),接着进入以i为控制变量的计算循环,i从1变到m(m=6),即累加m次(即6次)。循环体为sum=sum+power(i,l)。当6次循环执行完后,实现的是注意这里是由另一个自定义函数power(i,l)实现的。6power(i,l)处在SOP(m,l)函数中,表示SOP函数去调用power函数。其中i,l为实在参数,而intpower(p,q)中的p,q为形式参数。比如,执行SOP(6,4)时,l=4,m=6,当
6、i=1时,sum=sum+power(1,4)这里1,4为实在参数,调用power(p,q),两个形式参数p,q分别被赋以1,4。78递归算法在可计算性理论中占有重要地位,它是算法设计的有力工具,对于拓展编程思路非常有用。就递归算法而言并不涉及高深数学知识,只不过初学者要建立起递归概念不十分容易。我们先从一个最简单的例子导入。递归及其实现用递归算法求n!定义:函数fact(n)=n!fact(n-1)=(n-1)!则有fact(n)=nfact(n-1)已知fact(1)=19为了表述得直观清晰,我们定义两个结点:或结点与与结点。图示的直观性与思维助力。1、或结点A为“或结点”
7、,A依不同条件会有两种不同的取值B或C。结点用表示。10如果有多于2种取值,可用下图:条件为Z1,Z2,…,Zn,取值为B或C,…或G112、与结点与结点要涂黑,相关联的B与C之间要用弧线连起来。A为与结点,A的最终取值为C结点的值,但为了求得C的值,得先求出B结点的值,C是B的函数。12仍以求n!为例画出如下与或图A为或结点;B为直接可解结点,值为1;C为与结点,当n>1时,A的取值即C的值,而C的值即E的值,为了求得E的值,需要先求出D的值。D值fact(n-1)乘以n即为E的值。13与