N16函数1.ppt_第1页
N16函数1.ppt_第2页
N16函数1.ppt_第3页
N16函数1.ppt_第4页
N16函数1.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、7.1什么是函数(函数残奥仪表和函数值) 7.2函数的定义和调用7.3函数的嵌套调用和课外作业P208在第1、2、7章函数中实现模块化编程,【示例】实现int max(int a,intb)if(ab )的e 主()进入最大(进入a、进入b ); 英特尔x、y、z; printf (“输入2个数:n”; scanf(%d%d,函数主函数是否调用系统标准函数用户定义的函数并考虑与c程序有关? (1)C是模块化编程语言,c需要函数表达式语言,并且名为main的主函数c程序的执行总是以main函数开始,并且不能用main嵌套函数,其中,7.1函数是什么(函数残奥仪表和函数值),(2)函数使用程序库函

2、数有: 1、函数功能2、函数残奥仪表的数量和顺序、以及各残奥仪表的意义和类型3、函数的下限值的意义和类型4、必要的包含文件、1函数的定义一般定义格式、合法识别符、函数主体、函数类型函数名称(残奥仪表类型z=xy? x:y; 返回(z ); 例如无参照函数print star () printf (“* * * * * * * * * *”n ); 或打印启动器(语音)打印机(* * * * * * * n )。 2函数的门值返回语句的形式: return (表达式)或return表达式或return; 功能:将程序控件传递给从被调用函数调用的函数,同时传递给被调用函数的说明:即使函数有多个re

3、turn语句,一次只能执行一个。如果函数类型与return语句中的表达式值的类型不一致,则根据前者,自动转换-函数调用转换void类型函数,例如门值函数void swap(int x,int y ) int temp; 时间=x; x=y; y=暂停; 我叫print star ()打印机。 主()接口; a=打印开始(); 打印机(% d,a ); 例函数带回不确定的值,输出: 10,voidprintstar () printf (* * * * * * * * * * * * * * ); 主()接口; a=打印开始(); 打印机(% d,a ); 编译错误! 例如函数门值型变换、mai

4、n() float a、b; 英特尔; scanf(%f,%f,3函数的调用形式函数名(实际尺残奥表); 说明:实际参加型残奥仪表数量相等,类型一致,按顺序对应于实际残奥仪表的评价顺序,由系统(turbo c从右向左),main() int i=2,p; p=f(i,I ); 打印机(% d,p ); 英国进口,英国进口。 射频(ab ) c=1; 艾尔斯伊夫(a=b ) c=0。 else c=-1; 返回(c ); 例:残奥仪表评价顺序,main() int i=2,p; p=f(i,I ); 打印机(% d,p ); 英国进口,英国进口。 射频(ab ) c=1; 艾尔斯伊夫(a=b )

5、 c=0。 else c=-1; 返回(c ); 运行结果: 0,运行结果: 1,4调用方式函数文:例printstar (); 打印机(“hello,World! n ); 函数表达式:示例m=max(a,b)*2; 函数关残奥字计量器:例如printf(“%d”,max(a,b ) ); m=max(a,max(b,c ) ),5函数说明对被调用函数的要求: (1)库函数3: #include (2)用户定义函数3360函数说明函数说明一般形式:函数型函数名(残奥仪表型残奥仪表名1, ); 或函数类型函数名称(残奥仪表类型、残奥仪表类型、 ); 角色:教授编译器函数的类型、残奥仪表的个数和

6、类型,验证函数的说明位置:主调函数的内或外注:如果函数的说明与函数的定义不同,则函数的说明不能出现在主调函数之前。 例函数的说明例: 6函数的残奥仪表及其传达方法(1)的形式与实际参数相关的scanf(%d,%d,实际残奥仪表的值为形状残奥仪表(变量)、return语句的返回值、函数残奥仪表使用说明:实际残奥仪表必须与类型参加实际残奥仪表类型一致,数如果形参加实残奥仪表类型不一致,则自动用形残奥仪表型变换函数调用变换残奥仪表的函数调用时对形状残奥仪表分配内存调用结束后,释放内存的实残奥仪表与残奥仪表名无关,仅与位置相关。 例如,修正x的立方,# includefloatcube (floatx

7、 )返回(x * x * x ); 主()浮点a,pr; printf (pleaseinputvalueofa : ); 当调用scanf(%f,x,1.2,1.2,1.728,(2)残奥仪表传递方法值传递方法(传递值)函数时,将单元格分配给残奥仪表,并且将实际残奥仪表的值复制到残奥仪表。 当调用结束时,释放波形残奥仪表单元,而实际残奥仪表单元仍保持原始值的特征:波形参与实际残奥仪表占用不同存储器单元的单向传输,而在地址传输方案(传递地址)函数调用时, 将数据的存储器地址作为残奥仪表传达给波形残奥仪表:波形参加实残奥仪表和波形残奥仪表必须是地址常数的printf (“调用前:n”); 打印(

8、x=% d,ty=%dn,x,y ); printf (“呼叫:n”); 交换(x,y ); printf (“呼叫后:n”); 打印(x=% d,ty=%dn,x,y ); 交换(进入a、进入b )进入暂停。 暂停=a; a=b; b=暂停; swap (英特尔* p 1、英特尔* p2)英特尔温度计。 p=*p1; *p1=*p2; *p2=p; 主()接口a、b; scanf(%d,%d,例如交换的两个个数(函数残奥仪表是地址,指针部分),函数的形状参数和实际参数具有如下特征:仅在调用形状参数时分配存储单元,在调用结束时立即释放所分配的存储单元。 因此,残奥仪表只在函数内部有效。 函数调

9、用结束后返回主调函数后,该残奥变量将无法使用。实际残奥仪表包括常数、变量、表达式、函数等,无论实际残奥仪表是什么类型的量,在调用函数时,都必须具有一定的值,以便将这些值传递给形状残奥仪表。 因此,需要通过预先分配或键入值等方法,在实际的残奥仪表中获取确定值。 实际的残奥仪表和形状残奥仪表必须在数量上、类型上、顺序上严格一致。 如果不一致,则会发生“类型不一致”的错误。 函数调用产生的数据传输是单向的。 也就是说,只能将实际残奥仪表的值传递给形状残奥仪表,而不能将形状残奥仪表的值反向传递给实际残奥仪表。 因此,在函数调用过程中,形状残奥仪表的值会发生变化,但实际的残奥仪表的值不会发生变化。7.3

10、函数嵌套和递归调用(1)嵌套调用c规则:函数定义不能嵌套,但可以嵌套调用函数的函数调用执行过程;(2)递归调用定义:函数直接或间接调用自调用函数的递归调用,int f (int z=f(y ); return(2*z ) :c编译系统说明递归函数的自调用次数没有限制,并将存储函数变量、门限值等信息的空间分配给内存堆栈区域。 递归次数过多可能导致堆栈溢出。 例:说5个人坐在一起,第5个人几岁?他比个人大。 问起个人的年龄,他说比个人大。 问问个人,又说比个人大。 问了一下个人,据说比个人年长。 最后我问谁,他说他年纪大了。 age (5)=age (4)2age (4)=age (3)2age

11、(3)=age (2)2age (2)=age (1)递归终止的终止条件:第一人10岁,age(5) c=age(4) 2; 返回c; age (入口)入口c; if (n=1) c=10。 埃尔斯c=阿格e (n-1 ) 2。 返回c; 递归过程跟踪分析:age(4) c=age(3) 2; 返回c; age(3) c=age(2) 2; 返回c;age(2) c=age(1) 2。 返回c; age (1) c=10返回c;、c=10、c=12、c=14、c=16、c=18、函数递归调用的过程:递归过程:连续变换原始问题的倒溯过程:从已知的条件沿递归的逆过程,一个一个地到递归的初始递归算法

12、解决问题的方法:初始问题的解决方法转换为相同的新问题,新问题的规模小于原始问题的新问题可以转换为更小的问题,直到达到最终可以简单解决的问题递归终止条件。 例如,求出n的阶乘,#include int fac(int n) int f; if (n0)打印机(n 0,数据错误! ); else if(n=0|n=1) f=1。 f=故障诊断(n-1 ) * n。 返回(f ); 主() int n,y; 打印机(inputaintegernumber : ); 求出扫描(% d,递归结束条件: n=0或n=1,n! 递归的方法,也就是5! 等于五十四! 然后是4 43! 不要! 的双曲馀弦值。 写一个判断素数的函数,在主函数中输入整数,调用判断素数的函数,输出是否是素数的信息。 主(进)进、退。 k=(入) sqrt (n ); for(i=2; i=k; I )接口(n % I=0)返回0。 返回1; 主()接口; printf (“输入正整数n”) :编写scanf(%d,22个函数,分别求出两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,从键盘输入输出结果的两个整

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论