函数的定义和嵌套调用.ppt

上传人:wuy****n92 文档编号:73167323 上传时间:2023-02-16 格式:PPT 页数:32 大小:314.61KB
返回 下载 相关 举报
函数的定义和嵌套调用.ppt_第1页
第1页 / 共32页
函数的定义和嵌套调用.ppt_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《函数的定义和嵌套调用.ppt》由会员分享,可在线阅读,更多相关《函数的定义和嵌套调用.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第1212讲讲 函数的嵌套调用函数的嵌套调用一、一、概述概述 1 1、C C程序的模块化结构程序的模块化结构 2 2、函数定义的一般形式函数定义的一般形式二、二、函数间的数据传送函数间的数据传送 1、形参与实参形参与实参 2、函数的返回值函数的返回值 3、Void函数函数 4、函数原型函数原型 5、数组作为函数的参数数组作为函数的参数三、三、函数的调用函数的调用 1、函数调用的一般形式函数调用的一般形式 2、函数嵌套调用函数嵌套调用1、C程序的模块化结构程序的模块化结构结构化程序设计方法:结构化程序设计方法:自顶向下,逐步细化;自顶向下,逐步细化;模块化设计;模块化设计;结构化编码。结构化编

2、码。特点:特点:程序结构清晰,易于维护,增加了函数的可重用程序结构清晰,易于维护,增加了函数的可重用性和可扩充性。性和可扩充性。一、一、概述概述格式一格式一:类型符类型符 函数名称(函数名称(形参表形参表)形参说明形参说明 数据说明语句数据说明语句 可执行语句可执行语句 格式二格式二:类型符类型符 函数名称(函数名称(类型类型 形参形参1 ,)数据说明语句数据说明语句 可执行语句可执行语句 2、函数定义的一般形式函数定义的一般形式函数头函数头函数体函数体函数头函数头函数体函数体函数定义的一般形式举例:函数定义的一般形式举例:(1)float sum(x,y)float x,y;int z;z=

3、x+y;return z;(2)float sum(float x,float y)int z;z=x+y;return z;函数定义的一般形式说明函数定义的一般形式说明:(1)float sum(x,y)float x,y;int z;z=x+y;return z;类型说明符:指指明明函函数数的的类类型型,函函数数的的类类型型是是指指函函数数的的返返回回值值的的类类型型,函函数数返返回回值值所所具具有有的的数数据据类类型型的的种种类类与与变变量量相相同同。省省略略时时则则默默认认为为intint型型。若若明明确确表表示示函函数数 不不带带回回值值,可可以以用用 void void 作作类类型

4、型符符,称称 无类型无类型 或称或称 空类型空类型。float sum(x,y)float x,y;int z;z=x+y;return z;函数名:函数名:通常是一个标识符,通常是一个标识符,在一个程序中除了主函在一个程序中除了主函数外其余函数的名字可数外其余函数的名字可以任意取,但应有意义。以任意取,但应有意义。()()函数标志。函数标志。float sum(float x,float y)float sum(x,y)float x,y;int z;z=x+y;return z;参数表(参数表(形参表形参表 ):):函函数数定定义义时时的的参参数数称称为为形形式式参参数数,形形式式参参数数

5、彼彼此间用逗号分隔。此间用逗号分隔。形形式式参参数数省省略略时时称称无无参参函函数数,但但此此时时函函数数名名后后的圆括号不能省。的圆括号不能省。形形参参说说明明是是用用来来指指明明各各个个形形式式参参数数的的类类型型,它它随形参的存在而存在。随形参的存在而存在。float sum(x,y)float x,y;int z;z=x+y;return z;函数体:函数体:函函数数中中最最外外层层一一对对花花括括弧弧 括括起起来来的的内内容容,它它由由若若干干个个数数据据说说明明语语句句和和可可执执行行语语句句组组成成,决决定定函函数数要要实实现现的的功功能能、完成的任务。完成的任务。函函数数体体内

6、内若若无无任任何何语语句句时时,为空函数。为空函数。例例 编写自定义函数计算编写自定义函数计算:分析:分析:确定形参:求确定形参:求 c 必须知道必须知道 f 的大小,设形参为的大小,设形参为temp。确定函数:函数的返回值即为确定函数:函数的返回值即为 c 的值,设为实型。的值,设为实型。程序:程序:float ftoc(temp)float temp;float c;c=(5./9.)*(temp 32);return c;例例 编写一个自定义函数求编写一个自定义函数求 n n!分析:分析:确定形参:确定形参:求求 n!必须知道必须知道 n 的大小,设形参为的大小,设形参为 n。确定函数:

7、确定函数:函数的返回值即为函数的返回值即为 n!的值,设为实型。的值,设为实型。程序:程序:float jiechen(int n )float x,y;for(x=y=1.0;x=n;x+)y*=x;return y;实参实参(实际参数)是函数调用时调用函数传送(实际参数)是函数调用时调用函数传送给被调用函数参数的实际值。实参可以是常量、给被调用函数参数的实际值。实参可以是常量、变量和表达式,实参必须有确定的值。变量和表达式,实参必须有确定的值。例如:例如:fabs(-2);putchar(c);sqrt((x*x+2)*(y+z);二、二、函数间的数据传送函数间的数据传送1 1、形参与实参

8、形参与实参形参形参(形式参数)是函数定义时,参数表中的(形式参数)是函数定义时,参数表中的参数。形式参数只能是变量。在函数定义时,参参数。形式参数只能是变量。在函数定义时,参数表中的形参并没有具体的值,系统也不为其分数表中的形参并没有具体的值,系统也不为其分配存储单元。配存储单元。例如:例如:max(float x,float y)float ftoc(float temp)例例 形参和实参的运用形参和实参的运用try(int x,int y,int z )printf(2)x=%d,y=%d,z=%dn,x,y,z);z=x+y;x=x*x;y=y*y;printf(3)x=%d,y=%d,

9、z=%dn,x,y,z);main()int a=2,b=3,c=4;printf(1)a=%d,b=%d,c=%dn,a,b,c);try(a,b,c);printf(4)a=%d,b=%d,c=%dn,a,b,c);说明:说明:2341000H实参实参 a,b,c1002H1004H传传递递234形参形参 x,y,z2000H2002H2004H495形参形参 x,y,z2000H2002H2004H函数的返回值:当被调用函数在完成一定的功函数的返回值:当被调用函数在完成一定的功能后,可以将处理的结果返回到调用函数。能后,可以将处理的结果返回到调用函数。方式:方式:return 语句语句作

10、用:将表达式的值传给调用函数,并把控作用:将表达式的值传给调用函数,并把控制权转向调用函数实现函数的返回,即结束制权转向调用函数实现函数的返回,即结束被调用函数的执行,并将控制返回到调用它被调用函数的执行,并将控制返回到调用它的函数。的函数。格式:格式:return (表达式表达式 );2 2、函数的返回值函数的返回值 对对于于不不需需要要提提供供返返回回值值的的函函数数可可以以直直接接用用void作作为为函函数数类类型型定定义义,以以表表明明此此函函数数返返回回值值为为”无类型无类型”或或”空类型空类型”。例:例:void psch()printf(Wuhan Universityn);ma

11、in()psch();3、void函数函数函数原型:在定义或调用函数前,对该函数进行声明。函数原型:在定义或调用函数前,对该函数进行声明。作用:将函数名、函数类型及形参个数、类型、顺序等作用:将函数名、函数类型及形参个数、类型、顺序等通知编译系统,当函数被调用时,可对实参、形参的类通知编译系统,当函数被调用时,可对实参、形参的类型、个数匹配情况进行检查。型、个数匹配情况进行检查。格式:格式:类型符类型符 函数名(参数类型函数名(参数类型1,););或:或:类型符类型符 函数名(类型符函数名(类型符 形参形参1,););4 4、函数原型函数原型例例 利用变量换数利用变量换数 void huans

12、hu1(int x,int y);/*函数原型声明函数原型声明*/main()/*主函数主函数*/int a=5,b=10;printf(1)a=%d,b=%dn,a,b););huanshu1(a,b);printf(4)a=%d,b=%dn,a,b););void huanshu1(int x,int y)/*利用变量换数利用变量换数*/int t;printf(2)x=%d,y=%dn,x,y);t=x;x=y;y=t;printf(3)x=%d,y=%dn,x,y);例例 判定素数。判定素数。#include math.hint isprime(int);/*函数原型声明函数原型声明*

13、/main()int x=35;if(isprime(x)printf(%d 是素数。是素数。n,x);else printf(%d 不是素数。不是素数。n,x);isprime(int a)int i;for(i=2;i=sqrt(double)a);i+)if(a%i=0)return 0;return 1;数组元素做函数实参,遵循数组元素做函数实参,遵循”值传送值传送”特性,特性,此时形参为变量。此时形参为变量。数组名可做实参和形参,传送的是整个数组。数组名可做实参和形参,传送的是整个数组。在用数组名做函数参数时,实参和形参在用数组名做函数参数时,实参和形参都应该用数组(或指针变量)。都

14、应该用数组(或指针变量)。5 5、数组作为函数的参数数组作为函数的参数数组元素作为函数参数举例数组元素作为函数参数举例:szdy1(int x,int y);szdy2(int x,int y);main()int a10,b45;szdy1(a7,b32);szdy2(b12,a4);szdy1(int x,int y)szdy2(int x,int y)(1)szdy1(int x10);szdy2(int x45);main()int a10,b45;szdy1(a);szdy2(b);szdy1(int x10)szdy2(int x45)(2)数组名作函数参数时应注意:数组名作函数参

15、数时应注意:1 1)数数组组名名作作函函数数参参数数时时,应应在在主主调调函函数数和和被被调调函数中分别定义数组。函数中分别定义数组。2 2)实实参参数数组组与与形形参参数数组组的的类类型型必必须须相相同同,但但大大小可以不同。小可以不同。3 3)形参数组的一维下标可以省略。)形参数组的一维下标可以省略。4 4)数数组组名名表表示示的的是是数数组组元元素素的的首首地地址址,数数组组名名作作函函数数参参数数时时,传传递递的的是是整整个个数数组组。实实参参与与形形参之间的数据传递是参之间的数据传递是地址传递。地址传递。数组名作函数的参数举例:数组名作函数的参数举例:szdy1(int x10);s

16、zdy2(int x65);main()int a10,b45;szdy1(a);szdy2(b);szdy1(int x6)szdy2(int x65)例例 利用数组换数利用数组换数 void huanshu2(int shuzu,int n);main()/*主函数主函数*/int ab2=5,10,i;for(i=0;i2;i+)printf(1)ab%d=%2d,i,abi);huanshu2(ab,2);printf(n);for(i=0;i2;i+)printf(4)ab%d=%2d,i,abi);void huanshu2(int shuzu,int n)int t,i;prin

17、tf(n);for(i=0;in;i+)printf(2)shuzu%d=%2d,i,shuzui);for(i=0;in-1;i+)t=shuzui;shuzui=shuzui+1;shuzui+1=t;printf(n);for(i=0;in;i+)printf(3)shuzu%d=%2d,i,shuzui);说明说明:2000HA02002HA1ab=shuzu=2000H510105int ab 2 =5,10 ;huanshu2(ab,2);for(i=0;in-1;i+)k=shuzui;shuzui=shuzui+1;shuzu i+1=k;参数传递小结:参数传递小结:实实 参参

18、形形 参参传传 递递 数据数据基本变量基本变量表达式表达式数组元素数组元素基本变量基本变量传传 值值数组名数组名数组名数组名传传 址址格式:格式:函数名(函数名(实参列表实参列表 ););说明:说明:实参与形参的个数相等、类型相同、顺序一致,呈一实参与形参的个数相等、类型相同、顺序一致,呈一一对应的关系。一对应的关系。实参的求值顺序不确定,与所用系统有关。实参的求值顺序不确定,与所用系统有关。实参应有确定的值实参应有确定的值。三、三、函数的调用函数的调用1、函数调用的一般形式函数调用的一般形式方式方式 1)函数语句:)函数语句:例例 printf(”);2)函数表达式:函数表达式:例例 c=2*pow(3.5,6);3)函数参数:函数参数:例例 c=2*pow(pow(3.5,6),6);例例 printf(”%fn”,pow(3.5,6);例:例:说出下列程序的功能说出下列程序的功能fun2(int a,int b)int c;c=a*b%3;return c;fun1(int a,int b)int c;a+=a;b+=b;c=fun2(a,b);return c*c;main()int x=11,y=19;printf(%dn,fun1(x,y);

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

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

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

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