C语言程序设计 第5章函数.pptx
《C语言程序设计 第5章函数.pptx》由会员分享,可在线阅读,更多相关《C语言程序设计 第5章函数.pptx(97页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第5章函数,C语言程序设计,5.1库函数与自定义函数,1.库函数C语言提供了丰富的库函数,包括常用的输入/输出函数、数学函数等。如C程序中经常出现的输入/输出函数:scanf()、printf()等。用户无需定义,只要提供必要的说明即可使用。若使用这些输入/输出函数,则必须在程序开头加上说明“#includestdio.h”或“#include”,其中,“stdio.h”称为标准输入输出头文件。include说明必须以“#”开头,系统提供的头文件以“.h”作为文件的后缀。如数学函数对应的头文件是“math.h”。include说明不是C语句,因此,不能在末尾加分号。,库函数调用的一般形式如下:
2、函数名(参数表)C语言中库函数的调用有两种方式:(1)在表达式中调用。如“x=pow(3,2);”是在赋值表达式中调用pow()函数来求x的值。(2)作为独立的语句完成某种操作。如“printf(Howareyou);”就是原样输出字符串信息。,5.1库函数与自定义函数,5.1库函数与自定义函数,2.自定义函数用户根据自己的需要编写的函数称为用户自定义函数。一个C语言的源程序是由一个主函数和用户自定义函数加上必要的说明组成的,从而实现程序的模块化。(1)函数定义的一般形式函数定义的一般形式如下:,注意:“类型说明符”指的是函数的类型,即该函数返回值的数据类型。这些数据类型可以是int,long
3、,char,float,double等。当类型为int时,int可以省略;当函数不需要返回值时,可用void来表示它的类型。“函数名”是标识符,可由用户指定。参数表部分可有可无,当有多个参数时,参数之间用逗号隔开。例如:,5.1库函数与自定义函数,该函数没有参数,但括号不能省略,每次调用函数get()时,得到一个整型值。例如:intpow(intx,inty)该函数有两个参数,参数之间用逗号隔开。,5.1库函数与自定义函数,函数中由最外一层“”括起的部分为函数体,包括变量说明和语句,其中变量说明可有可无,语句也可有可无。在没有特别说明时,函数体内定义的变量均为局部变量,它们只在函数执行时有定义
4、。因此,不同函数中的局部变量可以同名。另外,形参变量也是局部变量。局部变量只在函数被调用时才被临时分配内存单元,当退出函数时,这些临时开辟的存储单元全部被释放掉。局部变量只在函数体内部起作用,与其他函数体的内部变量无关。不允许在一个函数内部再定义另一个函数。,5.1库函数与自定义函数,(2)函数参数形参:在定义函数时,函数名后面括号中的变量名称为形式参数。实参:在调用函数时,函数名后面括号中的表达式称为实际参数。定义函数时,形参必须指定类型,实参与形参的类型、顺序及个数应该一致。其中实参可以是常量、变量或表达式,但变量和表达式要有确定的值。例如:当a=1,b=2时,则“c=pow(5,6);”
5、“c=pow(a,b);”和“c=max(a+b,a*b);”这三种调用均正确。C语言中,参数的传递是“值传递”,即单向传递。数据只能由实参传给形参,而不能由形参传回给实参,即调用结束后实参仍为原值。,5.1库函数与自定义函数,(3)函数的返回值函数的返回值是通过返回语句return实现的,返回语句的形式为“return;”或“return(表达式);”。前者函数返回值是不确定的,此时调用者对返回值不感兴趣,后者函数表示终止当前函数的执行,返回到它的调用函数继续执行,并带回return后表达式的值。return后的圆括号可省略。return0或return(0):在main()函数中,用于说明
6、程序的退出状态,即返回给操作系统。若为0表示正常退出。return(1)或return1:返回值为1,表示异常退出。如果return0或return1在其他函数里,则将返回值返回给调用函数。,5.1库函数与自定义函数,(4)函数调用的一般形式函数语句调用的一般形式如下:函数名(实参表列);例如:sum(a,a+b);函数表达式调用的一般形式如下:变量名=函数表达式;例如:c=max(a+b,a*b);,5.1库函数与自定义函数,【例5.1.1】用函数max()求两个表达式值的最大者。,5.1库函数与自定义函数,【分析】该程序中定义了max(intx,inty)函数,它有两个形参x和y,在主函数
7、中的语句“c=max(a+10,b);”中a+10和b是实参。函数与函数通过调用和参数传递发生联系。定义的max()函数出现在主函数调用之前,即先定义后调用。,5.1库函数与自定义函数,1.函数声明在C语言中对用户定义的函数应遵循“先定义后使用”的原则。若把函数定义在调用之后,应该在调用之前对函数进行说明。函数说明的一般形式如下:类型名函数名(参数类型1,参数类型2,);或类型名函数名(参数类型1参数名1,参数类型2参数名2,);,5.2函数的声明与递归调用,【例5.2.1】用函数max()求两个表达式值的最大者。,5.2函数的声明与递归调用,程序运行结果(键盘输入15,20):Maxis25
8、【分析】该程序是max()函数在主函数main()之后,在主函数调用max()函数时未进行声明。如果在函数调用前未进行函数声明,则有的编译器会出现警告错误,此时与编译器有关。,5.2函数的声明与递归调用,5.2函数的声明与递归调用,【分析】该程序中max()函数在调用函数之后,需要在函数调用前进行声明,本程序在main()函数外部进行声明,声明中给出了函数名、返回值类型、参数列表等与该函数有关的信息,以告知编译器与该函数有关的信息,让编译器知道函数的存在及存在的形式,即使函数暂时没有定义,也不会出错。如“intmax(intx,inty);”为声明函数,其后有分号,而“intmax(intx,
9、inty)”为定义函数不能有分号。所谓声明,就是告诉编译器我要使用这个函数,编译器没有找到该函数的定义不要紧,请不要报错,稍后我会把定义补上。函数声明的格式相当于去掉函数定义中的函数体再加上分号即可。当在函数的外部声明时,在声明语句的后面所有位置上都可以对该函数进行调用。,5.2函数的声明与递归调用,5.2函数的声明与递归调用,【分析】该程序中max()函数在调用函数之后,需要在函数调用前进行声明,本程序在main()函数内部进行声明,则只能在main()函数内部才能识别该函数。函数定义通常出现在函数调用之前,或者在函数调用前进行函数声明,程序执行时,总是从main()函数开始执行,当遇到函数
10、调用时,转去执行被调用函数,被调用函数执行完之后返回到它的调用函数继续执行,最终在main()函数结束。,5.2函数的声明与递归调用,【例5.2.2】用主函数调用自定义函数计算n的阶乘。,5.2函数的声明与递归调用,程序运行结果:su=120【分析】程序中intrfact(intx)是自定义函数,有一个形参x,在main()函数内部已声明该函数,调用时用实参n代替形参x。而dummy()是空函数,调用时什么也没做,但可以说明在此处能够调用一个其他函数,需要功能扩充时,可在此处进行添加。,5.2函数的声明与递归调用,2.函数的递归调用一个函数在它的函数体内直接或间接地调用它自身称为递归调用。递归
11、调用分为直接递归调用和间接递归调用。直接递归调用的形式如下:,5.2函数的声明与递归调用,间接递归调用的形式如下:,5.2函数的声明与递归调用,递归方法可使程序简洁、紧凑,可读性好,但占用存储空间大,运行速度慢。一个问题要采用递归方法来解决时,必须符合以下三个条件:(1)可以把需要求解的问题转化为一个新的问题,而这个新问题的解决方法仍与原来的解法相同,只是所处理的对象有规律地递增或递减。(2)可以应用这个转化过程使问题得以解决。(3)必定要有一个明确的结束递归的条件。,5.2函数的声明与递归调用,【例5.2.3】用递归的方法求n!。,5.2函数的声明与递归调用,【例5.2.4】计算f(x)=x
12、n。,5.2函数的声明与递归调用,相当于,5.2函数的声明与递归调用,1.变量的作用范围变量的说明是对一个变量的性质(例如变量的类型)加以说明,但并不分配存储空间,而变量的定义是对变量说明其性质并为其分配存储空间。变量按作用范围分为四种类型(也称为存储类):局部变量(又称为自动变量auto)、全局变量(又称为外部变量extern)、静态变量(static)和寄存器变量(register)。,5.3变量的作用范围与初始化,(1)局部变量局部变量又称为内部变量,在函数或复合语句内部以关键字auto说明,通常可以省略。它的作用域仅限于函数内,离开该函数后再使用这种变量是非法的。它们在函数被调用或执行
13、时,分配空间才自动产生,但不会初始化。函数返回时,在调用函数中它们又自动消失,其值只局限于被调用的函数。从一次调用到下一次调用之间,自动变量不保持值(即上一次调用时自动变量的值不会带到下一次调用中)。故在不同的函数(甚至在同一函数)中,可以定义同名的变量而互不影响。形式参数也是局部变量。例如:,5.3变量的作用范围与初始化,5.3变量的作用范围与初始化,在函数f1()内定义了三个变量,a为形参,b,c为一般变量。在函数f1()的范围内a,b,c有效,或者说a,b,c变量的作用域限于函数f1()内。同理,x,y,z的作用域限于函数f2()内。m,n的作用域限于函数main()内。关于局部变量的作
14、用域还要说明:主函数中定义的变量也只能在主函数中使用,不能在其他函数中使用。同时,主函数中不能使用其他函数中定义的变量。因为主函数也是一个函数,它与其他函数是平行关系。形参变量是属于该函数的局部变量。,5.3变量的作用范围与初始化,允许在不同的函数中使用相同的变量名,代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。如形参和实参的变量名都为n,是完全允许的。在复合语句中也可以定义变量,其作用域只在复合语句范围内。例如:,5.3变量的作用范围与初始化,本程序在main()函数中定义了i、j、k三个变量,“k=i+j”的值为5。而在复合语句内又定义了一个变量k,并赋初值为8。应该注意这两个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 CAD C语言 EXCEL 办公自动化 编程 程序 电脑 系统 网络
限制150内