《c语言第七章函数》PPT课件

上传人:仙*** 文档编号:246768302 上传时间:2024-10-15 格式:PPT 页数:22 大小:466KB
返回 下载 相关 举报
《c语言第七章函数》PPT课件_第1页
第1页 / 共22页
《c语言第七章函数》PPT课件_第2页
第2页 / 共22页
《c语言第七章函数》PPT课件_第3页
第3页 / 共22页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,我的程序有上百行,如何调试最方便?,我想设计一个程序完成下面的计算:,其中,,m,、,n,为正整数且,mn,该如何设计程序最有效?,m!n!(m-n)!,内容提要:,概述,函数的定义,函数参数,(,变量、数组,),和函数值,函数的调用,函数的嵌套调用,局部变量和全局变量及变量的存储类别,第八章 函 数,8.1,概述,C,程序的结构如图所示,一个,C,程序可以分为若干个函数,每个程序有且只能有一个主函数,(main),,其它函数都是“子函数”,子函数可以互相调用,但主函数不能被调用,一个,C,程序由一个或多个文件构成,一个源程序文件是一个编译单位,说明:,C,程序的执行从,main,函数开始,调用其它函数后仍回到,main,函数,程序在,main,函数结束时结束。,所有子函数都是平行的,任何子函数都不属于其它函数。,从用户角度看,函数可分为:,标准函数,即库函数,自定义函数,从函数形式看,可分为:,无参数函数,:,如,printstar( ),有参数函数,:,如,printf( ),例,8-1,#include “stdio.h”,void printstar( ) printf(“*n”);void printmessage( )printf(“Hello,world.n”); printstar( );void main( )printstar( ); printmessage( );,*,Hello,world.*,函数定义的一般形式:,类型说明 函数名 (,形式参数说明,),函数体,形式参数说明方法:,类型说明 变量名,类型说明 变量名,1,、无参数的定义形式,类型说明 函数名,( ) ,函数体,2,、有参数的定义形式,类型说明 函数名,(,形式参数说明,) ,函数体,3,、空函数的定义形式,类型说明 函数名,(,形式参数说明,) ,#include “stdio”int max(int x,int y) int z; z=(xy)?x:y; return(z);void main( ) int a,b,c; scanf(“%d%d”,8.2,函数定义的一般形式,例如:,int sum(int x,int y) int z; z=x+y; return(z); ,又如,void printhello(char name) printf(“Hello,%sn”,name);,函数定义的一般形式:,类型说明 函数名 (,形式参数说明,),函数体,一般情况下,函数体由两部分组成:,局部变量说明,语句,局部变量:函数体内定义的变量。其有效范围仅,限于所在函数的内部,离开函数体则无,意义。,例如:,int sum(int x,int y) int z; z=x+y; return(z);,又如,void printhello(char name) printf(“Hello,%sn”,name);,8.3,函数参数和函数的值,一个,C,程序由若干个函数组成,,各函数调用时经常需要传递一些,数据。即调用函数把数据传递给,被调用函数,经被调用函数处理,后,得到一个确定的结果,在返,回调用函数时,把这结果带回调,用函数。,各函数间的信息往来是由,参数传递,和,返回语句,实现的,a,b,z,主调函数,被调函数,一、形式参数和实际参数,函数参数,:,用于函数间数据的传递形式参数,:,定义,函数时使用的参数实际参数,:,调用,函数时使用的参数,函数,max,有两个形式参数,x,和,y,形参,x,和,y,只是在函数,max,中使用,a,和,b,是主函数中定义的变量,main,调用函数,max a,和,b,为函数,max,的实参,#include “stdio”int max (,int x,int y,) int z; z=(xy)?x:y; return(z);void main( ) int a,b,c; scanf(“%d%d”, c=max(,a,b,)printf(“Max is%dn”,c0);,59 95Max is 95,一、形式参数和实际参数,说明:,1,、定义函数时,必须说明形参的类型。,形参只能是,变量,或,数组,2,、函数被调用前,形参不占用内存;,函数调用结束后,形参所占用的内存,也将被收回。,3,、实参可以是,常量,、,变量,或,表达式,。,4,、,实参也形参的类型必须一致,。字符,型和整型可以互相匹配。,5,、,C,语言中实参对形参的数据传递是,“,值传递,”,即单向传递。它仅由参数,的对应位置确定,与名字无关。,#include “stdio”int max (,int x,int y,) int z; z=(xy)?x:y; return(z);void main( ) int a,b,c; scanf(“%d%d”, c=max(,a,b,)printf(“Max is%dn”,c0);,int max (int b,int a) int c; z=(ab)?a:b; return(c);,一、形式参数和实际参数,例,8-3,读程序,写出运行结果,Sum of 1,3 is 4,一、形式参数和实际参数,二、函数的返回值,1,、返回函数值的方法 函数的返回值也就是函数值,是 一个确定的值。,如果一个函数由返回值,就必 须使用,return,语句。,一个函数中可以有 一个以上的,return,语句,但不论执行到哪个,return,都将结束函数的调用返回 主函数。,return,语句中的括号可以省略;,return,后面的值可以是一个表 达式。,#include “stdio”int max (int x,int y) int z; z=(xy)?x:y; return(z);void main( ) int a,b,c; scanf(“%d%d”, if (xy) return x; return y;, return (xy?x:y);,二、函数的返回值,1,、返回函数值的方法,2,、函数值的类型, 函数的类型即函数值的类型。例如,函数,max,是,int,型的也就是函数值是,int,型的。,省略了类型说明的函数是,int,型的。,return,语句中表达式的值一般应与函数类型一致。,如果不一致,则需要进行类型转换。只有数值型数据可以进行自动类型转换,以函数类型为准。,#include “stdio”int max (int x,int y) int z; z=(xy)?x:y; return(z);void main( ) int a,b,c; scanf(“%d%d”,二、函数的返回值,1,、返回函数值的方法,2,、函数值的类型,3,、不需要返回值的函数, 如果函数中没有使用,return,语句,函数返回的是一个不确定的数值。,(,参见例,8-1),如果一个函数不需要返回值,(,表示一个过程,),,可以用,void,做类型说明。,如果一个函数被声明为,void,类型,就不允许再引用它的返回值,(,即只能用函数语句形式调用,),。,例,8-1,#include “stdio.h”,void printstar( ) printf(“*n”);void printmessage( )printf(“Hello,world.n”); printstar( );void main( )printstar( ); printmessage( );,8.4,函数的调用,一、函数调用的一般形式,一般形式:,函数名,(,实参表列,),说明:, 如果调用无参函数,实参表列可以忽略,但括号不能省。, 实参的个数和形参一般相等。, 实参与形参的类型应一一对应,必要时使用类型转换。,注意:不同系统中,实参的计算顺序不同。微机上一般是从右到左。为避免由此引起的混乱,一般应在调用函数前计算出实参的值。,#include “stdio”int max (int x,int y) int z; z=(xy)?x:y; return(z);void main( ) int a,b,c; scanf(“%d%d”,float max(float x,float y) float z; z=(x0?x;-x); void main( ) float x=-1.2,y; y=iabs(x) printf(“x=%f,iabs(x)=%fn”,x,y);,一、函数调用的一般形式,二、函数调用的方式,三、函数调用的执行过程,四、函数的原形说明,在程序中调用函数需满足以下条件:,1,、被调函数必须存在,且遵循,“先定,义后使用”,的原则。,2,、如果被调函数的定义在主调函数,之后,(,位置,),,可以先给出,原形说明,。,原形说明的形式为:,类型说明 函数名,(,参数类型,参数类型,),;,说明:库函数的原形说明存放在头文件,(.h),中,通过使用,include,预处理命令将这些原形说明插入程序中。,8.5,函数的嵌套调用,嵌套调用是指在一个函数的,函数体中又调用了其它函数。,例,8-1,#include “stdio.h”,void printstar( ) printf(“*n”);void printmessage( )printf(“Hello,world.n”); printstar( );void main( )printstar( ); printmessage( );,例,8-6,用弦截法求方程的根。,x,3,-5x,2,+16x-80=0,算法分析:,对于任意的,f(x)=0,1,、给定两个,x1,x2,,满足,x1x2,且,f(x1),和,f(x2),的符号相反,2,、过,f(x1),、,f(x2),两点做直线,(,弦,),,交于,x,轴与,x,,其中,3,、求,f(x);,若,f(x),与,f(x1),同符号,则根必在,(x1,x2),区间内,令,x1=x;,反之,根必在,(x1,x),区间内,令,x2=x,4,、重复,2,和,3,,直到,|f(x)|,(,为一个很小的数,如,10-6),为止。此时有,f(x) 0,x1.f(x2)-x2.f(x1) f(x2)-f(x1),x=,例,8-6,用弦截法求方程的根。,x,3,-5x,2,+16x-80=0,程序说明:,1,、函数,f(x)=x,3,-5x,2,+16x-80,2,、用函数,xpoint(x1,x2),求弦截点,x,的坐标,3,、用函数,root(x1,x2),求区间,(x1,x2),上的根,思考用函数编程的好处,例 编写程序求,C,n,m,=,分析:,重复三次求阶乘运算,只是,每次的值不同。,将求阶乘的过程编写一个函,数,fac,,以不同的参数值,k,来调用,函数,n!m!(m-n)!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!