第7章 函数 东南大学朱金付老师作品

上传人:飞*** 文档编号:50955704 上传时间:2018-08-11 格式:PPT 页数:98 大小:1.63MB
返回 下载 相关 举报
第7章 函数  东南大学朱金付老师作品_第1页
第1页 / 共98页
第7章 函数  东南大学朱金付老师作品_第2页
第2页 / 共98页
第7章 函数  东南大学朱金付老师作品_第3页
第3页 / 共98页
第7章 函数  东南大学朱金付老师作品_第4页
第4页 / 共98页
第7章 函数  东南大学朱金付老师作品_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《第7章 函数 东南大学朱金付老师作品》由会员分享,可在线阅读,更多相关《第7章 函数 东南大学朱金付老师作品(98页珍藏版)》请在金锄头文库上搜索。

1、第7章 函数概述函数是可以反复使用的程序段,用于完成一特 定的任务。如果有一段程序多次出现,就可以把这段程序 独立出来,定义成函数。建立函数成为“函数的定义”,使用函数成为“函 数的调用”。 函数所完成的任务成为函数的功能。从定义的角度:分为用户函数和系统函数 。从形式的角度:分为有参函数和无参函数 。从返回值的角度:分为有返回值函数和无 函数值函数。从作用范围分:内部函数和外部函数。说明:1、一个源程序文件由一个或多个函数组成,编译程序以文 件而不是以函数为单位进行编译的。2、一个程序可以由多个源文件组成,可以分别编译,统一 执行。 3、一个程序必须有且只有一个main( )函数,C+从ma

2、in( ) 函数开始执行。4、C+语言中,所有函数都是平行独立的,无主次、相互 包含之分。函数可以嵌套调用,不可嵌套定义。5、从使用角度来说,分标准函数和用户自定义函数;从形 式来说,分无参函数和有参函数。一、库函数库函数是C+编译系统已预定义的函数,用户根据需要可以直接使用这类函数。库函数也称为标准函 数。库函数有很多个,当用户使用任一库函数时,在程 序中必须包含相应的头文件。 如 #include等。void main(void ) printstar ( );print_message ( );printstar( ); void printstar (void ) printf(“*

3、* * * * * * * * * *n”); void print_message (void) printf(“ How do you do! n”); 调用函数调用函数调用函数函数类型函数名函数体两个被调函数 主要用于完成 打印操作。二、无参函数输出: * * * * * * * * * * *How do you do!* * * * * * * * * * * 三、有参函数主调函数和被调函数之间有数据传递。主调函数可以将参数传递给被调函数,被调函数中的结果也可以带回主调函数。类型说明 函数名(形式参数列表说明 ) 函数体 int max (int x,int y) int z;z=(

4、xy)? x : y ;return z; void main (void ) int a,b,c;scanf(“%d%d”,c=max (a , b) ;printf(“The max is%dn”,c); 主调函数调用函数函数类型 函数名函数体形参列表说明函数值实际参数将实际值a,b传给被调函数的参数 x,y,计算后得到 函数值z返回int max (int x,int y) int z;z=(xy)? x : y ;return z; void main (void ) int a,b,c;scanf(“%d%d”,c=max (a , b) ;printf(“The max is%dn

5、”, c); ab23 c3xy23z3函数参数和函数的值形参是被调函数中的变量;实参是主调函数 赋给被调函数的特定值。实参可以是常量、 变量或复杂的表达式,不管是哪种情况,在 调用时实参必须是一个确定的值。形参与实参类型相同,一一对应。形参必须要定义类型,因为在定义被调函数 时,不知道具体要操作什么数,而定义的是 要操作什么类型的数。int max (int x,int y) int z;z=(xy)? x : y ;return z; void main (void ) int a,b,c;scanf(“%d%d”,c=max (a+b , a*b) ;printf(“The max is

6、%dn”,c); 先计算,后 赋值若a为3,b为5,则实 参为8, 15,分别送给形 参x,y。说明: 1、在未出现函数调用时,形参并不占内存的存储单元,只 有在函数开始调用时,形参才被分配内存单元。调用结束 后,形参所占用的内存单元被释放。2、实参对形参变量的传递是“值传递”,即单向传递。在内 存中实参、形参分占不同的单元。3、形参只作用于被调函数,可以在别的函数中使用相同的 变量名。5a8b实参xy形参58void fun(int a, int b) a=a*10;b=b+a;printf(“%dt%dn”,a,b);void main(void) int a=2, b=3;fun(a,b

7、);printf(“%dt%dn”,a,b);ab23ab23202320 23 2 3void fun(int x, int y) x=x*10;y=y+x;printf(“%dt%dn”,a,b);void main(void) int a=2, b=3;fun(a+b,a*b);printf(“%dt%dn”,a,b);ab23xy 56505650 56 2 3形参实参类型相等,一一对应56形参必须要定义类型,因为在定义被调函数 时,不知道具体要操作什么数,而定义的是 要操作什么类型的数。形参是被调函数中的变量;实参是主调函数 赋给被调函数的特定值。在函数调用语句中 ,实参不必定义数据

8、类型,因为实参传递的 是一个具体的值(常量),程序可依据这个数值的表面形式来判断其类型,并将其赋值到 对应的形参变量中。函数的返回值 函数的返回值通过return语句获得。函数只 能有唯一的返回值。函数返回值的类型就是函数的类型。return语句可以是一个表达式,函数先计算 表达式后再返回值。return语句还可以终止函数,并将控制返回 到主调函数。一个函数中可以有一个以上的return语句,执行 到哪一个return语句,哪一个语句起作用。 int add ( int a, int b) return (a+b); int max ( int a, int b) if (xy)return

9、x ;else return y; 若函数体内没有return语 句,就一直执行到函数体 的末尾,然后返回到主调 函数的调用处。先计算,后返回可以有多个return语句不带返回值的函数可说明为void型。函数的类型与函数参数的类型没有关系。double blink ( int a, int b)如果函数的类型和return表达式中的类型不一致,则以函数的类型为准。函数的类型决定返回值的 类型。对数值型数据,可以自动进行类型转换。 既然函数有返回值,这个值当然应属于某一个确定 的类型,应当在定义函数时指定函数值的类型。 int max (float a, float b) / 函数值为整型 函数

10、返回值的类型,也是函数的类型参数(多个)函数值(唯一) 函数体int max ( int a, int b) int z;z=xy?x:y;return z; 如果有函数返回 值,返回值就是函 数值,必须惟一。如果有函数返回 值, 函数的类型就 是返回值的类型函数体的类型、形式参数的类型必须 在函数的定义中体现出来。函数的调用函数调用的一般形式函数名(实参列表);形参与实参类型相同,一一对应。i=2; f (i, +i);函数调用的方式作为语句 printstar( );作为表达式 c=max (a,b);作为另一个函数的参数 printf(“%d”,max (a,b);实际调用: f (3,

11、 3);1) 被调用的函数必须是已存在的函数2) 如果使用库函数,必须用 #include 在一个函数中调用另一函数(即被调用函数)需要 具备哪些条件呢?3) 函数调用遵循先定义、后调用的原则,即被调函数应出现在主调函数之前。float max(float x, float y) float z;z=(xy)? x : y ;return z; void main (void) float a,b, c;scanf(“%f%f”,c=max (a+b , a*b) ;printf(“The max is%fn”,c); 被调函数先定义定义之后再调用形参必须说 明参数类型实参传递的是一个具体的值

12、 ,不必说明参数类型4) 如果使用用户自己定义的函数,而该函数与调用它的函数(即主调函数)在同一个程序单位中且 位置在主调函数之后,则必须在调用此函数之前对 被调用的函数作声明。 float max (float x, float y) float z;z=(xy)? x : y ;return z; void main (void) float a,b, c;float max (float,float);scanf(“%f%f”,c=max (a,b) ;printf(“The max is%fn”,c); 函数原型说明函数定义定义是一个完整的函数单位, 而原型说明仅仅是说明函数的 返回值

13、及形参的类型。void main(void) int i=2, x=5, j=7; void fun(int,int);fun ( j, 6);printf(“%dt%dt%dn”,i,j,x);void fun ( int i, int j) int x=7;printf(“%dt%dt%dn”,i,j,x);2i5x7j676 jxi7输出: 7 6 72 7 5 void main(void ) int x=2,y=3, z=0;void add(int,int,int);printf(“(1) x=%d,y=%d,z=%dn“,x,y,z);add (x, y, z);printf(“

14、(3) x=%d,y=%d,z=%dn“,x,y,z);void add ( int x, int y, int z) z=x+y; x=x*x; y=y*y;printf(“(2) x=%d,y=%d,z=%dn“,x,y,z);2x3y0zxyz230495(1) x=2 y=3 z=0(2) x=4 y=9 z=5(3) x=2 y=3 z=0计算100200之间的素数,用函数prime( )判断一个数是 否是素数,若是该函数返回1,否则返回0。void main(void) for(int i=100;ic?r:c;for(int i=r-1;i=1;i-) if(a%i=0retur

15、n i; 写一个函数验证哥德巴赫猜想;一个不小于6的偶 数可以表示为两个素数之和,如6=3+3, 8=3+5, 10=3+7。在主函数中输入一个不小于6的偶数n ,函数中输出以下形式的结果34=3+31 函数的嵌套调用 C语言中,所有函数都是平行独立的,无主次、相 互包含之分。函数可以嵌套调用,不可嵌套定义。int max ( int a, int b) int c;int min ( int a, int b) return ( ab? a : b); int max ( int a, int b) int c;c=min(a,b); return ( ab? a : b); int min ( int a, int b) return ( a1int age ( int n ) int c;c=age(n-

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

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号