(6.26)--第25课(6.1节-函数的定义、调用及返回).ppt

上传人:奉*** 文档编号:96452271 上传时间:2023-11-29 格式:PPT 页数:20 大小:112.44KB
返回 下载 相关 举报
(6.26)--第25课(6.1节-函数的定义、调用及返回).ppt_第1页
第1页 / 共20页
(6.26)--第25课(6.1节-函数的定义、调用及返回).ppt_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《(6.26)--第25课(6.1节-函数的定义、调用及返回).ppt》由会员分享,可在线阅读,更多相关《(6.26)--第25课(6.1节-函数的定义、调用及返回).ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、函数的定义、调用及返回函数【引例】编写程序求解:3!+5!-7!如何求解 n!?void main()int n,i;double s;scanf(%d,&n);s=1;for(i=1;i=n;i+)s=s*i;printf(“%d!=%.0fn,n,s);【引例】编写程序求解:3!+5!-7!void main()int i;double s1,s2,s3,s;s1=s2=s3=1;for(i=1;i=3;i+)s1=s1*i;for(i=1;i=5;i+)s2=s2*i;for(i=1;i=7;i+)s3=s3*i;s=s1+s2-s3;printf(“3!+5!-7!=%.0fn,s);

2、代码重复、冗余【引例】编写程序求解:3!+5!-7!采用模块化程序设计:主函数主函数main()main()void main()double s;s=fac(3)+fac(5)-fac(7);printf(s=%.0fn,s);自自定定义义函函数数facfac()()fac()函数的定义部分 fac()函数的代码部分/*用fac(3)、fac(5)、fac(7)分别求3!、5!和7!*/*调用库函数printf()完成输出操作*/【引例】3!main()int n,i;long s;scanf(%d,&n);s=1;for(i=1;i=n;i+)s=s*i;printf(%d!=%ldn,n

3、,s);n=3;5!7!n=5;n=7;jiecheng()n返回s值编写程序求解:3!+5!-7!为什么使用函数为什么使用函数l函数使程序模块化把一个规模较大的问题分解成若干个较小的相对独立的部分,对每一个部分使用一个较小的程序段,即程序模块(module)来处理l程序采用模块化结构的好处:n分而治之提高程序开发的效率使程序易于管理n代码重用使用现有的函数作为构件来创建程序函数可以被重复使用n抽象隐藏了实现的细节例如:使用库函数(printf()),但并不知道它的具体实现(没有影响使用)C C语言的函数语言的函数l在C语言中,函数(function)是构成程序的基本模块一个C程序由一个或多个

4、函数组成,有且仅有一个主函数,即main()函数每个函数完成一个相对独立的且功能明确的任务由主函数调用其他函数,其他函数也可以互相调用同一个函数可以被一个或多个函数调用任意多次fun_afun_bfun_cfun_cfun_dfun_efun_ffun_dmain函数的分类函数的分类v标准函数(库函数)由系统提供的函数,用户不必自己定义,可以直接调用一般应在本文件的开头用#include命令将调用的库函数信息包含到本文件中来如#include#include v用户自定义函数根据函数所要完成的功能自己定义函数的格式n无参函数函数调用时,主调函数并不将数据传送给被调函数n有参函数函数调用时,主调

5、函数将数据传送给被调函数函数定义函数定义任何函数定义都是由函数头和函数体两部分组成无参函数的定义形式:无参函数的定义形式:类型标识符类型标识符 函数名函数名()()声明部分声明部分 语句语句 函数体:包括说明部分和语句部分例void print()void print()/无参函数,也没有返回值 printf(printf(hellonhellon);函数定义函数定义任何函数定义都是由函数头和函数体两部分组成 int max(int x,int y)/求两个整数的最大值 int z;/函数体中的声明部分 z=xy?x:y;return(z);例有参函数定义的一般形式:有参函数定义的一般形式:类

6、型标识符类型标识符 函数名函数名(形式参数表列形式参数表列 )函数体函数体 类型类型 参数参数1 1,类型,类型 参数参数2 2,说明说明int max(int x,int y)/求两个整数的最大值 int z;/函数体中的声明部分 z=xy?x:y;return(z);l类型标识符类型标识符指定函数值的类型,即函数带回来的值的类型。函数类型与函数体中用于返回值的变量类型应保持一致。如果不需要带回函数值,则应将类型标识符指定为voidl函数名函数名应该是合法的标识符说明说明int max(int x,int y)/求两个整数的最大值 int z;/函数体中的声明部分 z=xy?x:y;retu

7、rn(z);l类型标识符类型标识符指定函数值的类型,即函数带回来的值的类型。函数类型与函数体中用于返回值的变量类型应保持一致。如果不需要带回函数值,则应将类型标识符指定为void说明说明int max(int x,int y)/求两个整数的最大值 int z;/函数体中的声明部分 z=xy?x:y;return(z);l类型标识符类型标识符指定函数值的类型,即函数带回来的值的类型。函数类型与函数体中用于返回值的变量类型应保持一致。如果不需要带回函数值,则应将类型标识符指定为voidl函数名函数名应该是合法的标识符l函数定义中的参数为形式参数形式参数,简称形参。形参列表的每个参数包括参数类型和参

8、数名。形参列表若有多个参数,则以逗号分开说明说明l函数体函数体中包括声明语句和可执行语句在函数体内可以声明变量不能定义函数,即函数的定义不允许嵌套int max(int x,int y)/求两个整数的最大值 int z;/函数体中的声明部分 z=xy?x:y;return(z);函数的返回值函数的返回值形式 return(return(表表达式达式);或:return return 表达式表达式;或:return;return;功能使程序控制从被调用函数返回到调用函数中,同时把返回值带给调用函数说明若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换当函数类型应为void型

9、时,应使用第三种形式或不用return函数中可有多个return语句,但每次执行只能有一条被执行函数只能有一个返回值void main()float a,b;int c;scanf(%f,%f,&a,&b);c=max(a,b);printf(Max is%dn,c);int max(float x,float y)float z;z=xy?x:y;return(z);例 无返回值函数 void swap(int x,int y)int temp;temp=x;x=y;y=temp;return;/也可以没有 函数的调用函数的调用l调用形式:调用形式:函数名函数名(实参表实参表)或或 函数名函

10、数名()()l说明:说明:实参与形参个数相等,类型一致,按顺序一一对应。若被调函数没有形参,则函数调用时也就没有实参若形参是基本类型的变量,则实参可以是常量、已赋值的变量、数组元素、表达式甚至是函数调用返回值类型为void的函数只能以语句形式调用,其它返回类型的函数一般以表达式形式调用函数调用时,把实参依序传递给形参,然后执行函数定义体中的语句,执行到函数结束或return语句时,程序流程返回到调用点函数的调用过程函数的调用过程double fac(int n);void main()s=fac(3);double fac(int n)int i;double s;s=1;for(i=1;i=

11、n;i+)s=s*i;return s;主调函数暂停,保存现场;把实参的值拷贝给形参,控制权交给函数 fac被调函数执行结束,把函数值返回给主调函数,同时把控制权还给主调函数;恢复现场,主调函数继续执行函数原型函数原型对被调用函数要求:必须是已存在的函数库函数:#include 用户自定义函数:函数原型声明函数原型声明函数原型声明一般形式一般形式:函数类型函数类型 函数名函数名(形参类型形参类型 形参名形参名,.);,.);或:函数类型函数类型 函数名函数名(形参类型形参类型,.);,.);或:函数类型函数类型 函数名函数名();();作用作用:告诉编译系统函数类型、函数名、参数个数及类型,以

12、便检验函数定义与函数声明不同函数说明位置:程序的数据说明部分(函数内或外)被调用函数定义出现在主调函数之前时,可不作函数说明【例:】void main()void add(float,float);float a,b,c;scanf(%f,%f,&a,&b);c=add(a,b);printf(sum is%f,c);float add(float x,float y)float z;z=x+y;return(z);编译时出现类型不匹配的错误void main()float add(float,float);/float add(float x,float y);float a,b,c;sca

13、nf(%f,%f,&a,&b);c=add(a,b);printf(sum is%f,c);float add(float x,float y)float z;z=x+y;return(z);float add(float x,float y)float z;z=x+y;return(z);void main()float a,b,c;scanf(%f,%f,&a,&b);c=add(a,b);printf(sum is%f,c);被调函数出现在主调函数之前时,可以不声明函数float add1(float,float);int add2(float,float);void main()float a,b,c;int d;scanf(%f,%f,&a,&b);c=add1(a,b);d=add2(a,b);printf(sum is%f%f,c,d);float add1(float x,float y)int add2(float x,float y)谢谢西华大学

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁