C高级语言程序设计第5章.ppt
《C高级语言程序设计第5章.ppt》由会员分享,可在线阅读,更多相关《C高级语言程序设计第5章.ppt(161页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+高级语言程序设计高级语言程序设计第第5 5章章 函数函数北京邮电大学信息与通信工程学院北京邮电大学信息与通信工程学院程序设计中,把具有一定功能的程序模块用函数或类来实现。2023/1/16北京邮电大学信息与通信工程学院-2-第第5 5章章 函数函数内容内容函数定义、声明、函数的调用、函数参数传递函数定义、声明、函数的调用、函数参数传递机制机制函数的特殊形式,包括递归函数、内联函数、函数的特殊形式,包括递归函数、内联函数、带默认参数值的函数带默认参数值的函数标识符的作用域和可见性标识符的作用域和可见性变量的存储类型和生存期变量的存储类型和生存期2023/1/16北京邮电大学信息与通信工程学院
2、-3-5.1 函数概述 结构化程序设计,将整个程序自顶向下分为若结构化程序设计,将整个程序自顶向下分为若干个程序模块,每个模块用来实现一个特定的干个程序模块,每个模块用来实现一个特定的功能。功能。C+C+中的模块以函数和类的形式实现。中的模块以函数和类的形式实现。函数是具有一定功能又经常使用的相对独立代函数是具有一定功能又经常使用的相对独立代码段。码段。无论是面向过程的程序设计还是面向对象的程无论是面向过程的程序设计还是面向对象的程序设计,函数都是一种实现算法的重要形式。序设计,函数都是一种实现算法的重要形式。2023/1/16北京邮电大学信息与通信工程学院-4-5.1 函数概述 函数函数n接
3、口(规定接口形式)接口(规定接口形式)w函数名(命名规则与变量相同,见名知意)函数名(命名规则与变量相同,见名知意)w函数类型(返回值类型)函数类型(返回值类型)w形式参数表形式参数表n函数体(实现算法函数体(实现算法 三种基本结构组合而成)三种基本结构组合而成)常用的函数常用的函数nC+C+的库函数的库函数n自定义的函数自定义的函数2023/1/16北京邮电大学信息与通信工程学院-5-5.1.1 自定义函数概述编程者在处理具体问题时,将程序中多处使用编程者在处理具体问题时,将程序中多处使用的、实现一定功能的特定代码段定义成函数。的、实现一定功能的特定代码段定义成函数。这样的函数称为这样的函数
4、称为自定义函数自定义函数。在同一个程序中,一个函数只能定义一次。在同一个程序中,一个函数只能定义一次。一般是通过函数调用来使用函数。一般是通过函数调用来使用函数。函数调用需要指定函数名并且提供被调用函数函数调用需要指定函数名并且提供被调用函数所需的信息(即函数参数)。所需的信息(即函数参数)。2023/1/16北京邮电大学信息与通信工程学院-6-5.1.1 自定义函数概述例如要打印某一年某一月的月历例如要打印某一年某一月的月历2023/1/16北京邮电大学信息与通信工程学院-7-5.1.2 库函数概述C+C+标准库提供了丰富的函数集合,可以进行标准库提供了丰富的函数集合,可以进行常用的常用的数
5、学计算、字符串操作、字符操作、输数学计算、字符串操作、字符操作、输入入/输出、错误检查输出、错误检查和许多其他操作。和许多其他操作。要熟悉要熟悉C+C+标准库提供的类和函数集合,不要标准库提供的类和函数集合,不要事事从头做起,要尽可能利用事事从头做起,要尽可能利用C+C+标准库提供标准库提供的函数,以便减少程序开发的时间。这是程序的函数,以便减少程序开发的时间。这是程序设计的技巧之一。设计的技巧之一。2023/1/16北京邮电大学信息与通信工程学院-8-5.1.2 库函数概述数学库函数数学库函数n实现常见的数学计算实现常见的数学计算n使用时,在程序中嵌入使用时,在程序中嵌入cmathcmath
6、头文件,按对应库头文件,按对应库函数的接口形式写调用语句。函数的接口形式写调用语句。n调用数学函数调用数学函数:函数名函数名(参数参数1,1,参数参数n)n)例如例如:double x;double x;x=sqrt(900.0);x=sqrt(900.0);coutx;coutx;n数学函数库中的多数函数都返回数学函数库中的多数函数都返回doubledouble类型结果。类型结果。2023/1/16北京邮电大学信息与通信工程学院-9-2023/1/16北京邮电大学信息与通信工程学院-10-常用数学库函数常用数学库函数函函数数说明明举例例ceil(x)将将x取取整整为不不小小于于x的的最最小小
7、整数整数ceil(9.2)=10ceil(9.8)=9cos(x)x(弧度)的余弦(弧度)的余弦cos(0.0)=1.0exp(x)指数函数指数函数exexp(1.0)=2.71828exp(2.0)=7.38906fabs(x)x的的绝对值fabs(5)=5floor(x)将将x取取整整为不不大大于于x的的最最大大整数整数floor(9.2)=9floor(9.8)=10fmod(x,y)x/y的浮点数余数的浮点数余数fmod(13.657,2.333)=1.992log(x)x的自然的自然对数(底数数(底数为e)log(2.718282)=1.0log(7.389056)=2.0log10
8、(x)x的的对数(底数数(底数为10)log(10.0)=1.0log(100.0)=2.0pow(x,y)x的的y次方(次方(xy)pow(2,7)=128pow(9,0.5)=3sin(x)x(弧度)的正弦(弧度)的正弦sin(0.0)=0sqrt(x)x的平方根的平方根sqrt(900.0)=30.0tan(x)x(弧度)的正切(弧度)的正切tan(0.0)=02023/1/16北京邮电大学信息与通信工程学院-11-#include#includeusingnamespacestd;intmain()coutabc;if(a!=0)&(b*b-4*a*c0)doubleradical=s
9、qrt(b*b-4*a*c);doubleroot1=(-b+radical)/(2*a);doubleroot2=(-b-radical)/(2*a);coutRoots:root1root2;elsecoutDoesnothavetworealroots;return0;调用函数调用函数 或主调函数或主调函数被调函数被调函数库函数库函数2023/1/16北京邮电大学信息与通信工程学院-12-#includeusingnamespacestd;floatCircleArea(floatr);intmain()/manage circle computationcoutMyRadius;flo
10、atArea=CircleArea(MyRadius);coutCirclehasarea=y?x:y;returnmaxv;2023/1/16北京邮电大学信息与通信工程学院-15-float CircleArea(float r)const float Pi=3.1415;return Pi*r*r;5.2.1 5.2.1 函数的定义函数的定义 函数体函数体返回值语句返回值语句局部变局部变量定义量定义形式参数形式参数函数类型函数类型函数名函数名5.2.1 函数的定义 函数名是函数体代码段的函数名是函数体代码段的外部标识符外部标识符函数定义之后,即可通过函数名调用函数。函数定义之后,即可通过函
11、数名调用函数。例例:/Sum():compute sum of integers in a.bintSum(inta,intb)intTotal=0;for(inti=a;i=b;+i)Total+=i;returnTotal;2023/1/16北京邮电大学信息与通信工程学院-16-5.2.1 函数的定义 函数的形式参数表,简称形参表函数的形式参数表,简称形参表 形式:形式:(类型类型1 1 形式参数形式参数1 1,类型,类型n n 形式参数形式参数n)n)2023/1/16北京邮电大学信息与通信工程学院-17-/Sum():compute sum of integers in a.bintS
12、um(inta,intb)intTotal=0;for(inti=a;i=b;+i)Total+=i;returnTotal;形式参数表示主调函数和被调函数之间需要交换的形式参数表示主调函数和被调函数之间需要交换的信息信息(1)(1)传给被调函数的待处理的数据;传给被调函数的待处理的数据;(2)(2)控制被调函数执行操作的信息;控制被调函数执行操作的信息;(3)(3)被调函数执行的结果。被调函数执行的结果。形式参数表从参数的形式参数表从参数的类型、个数、排列顺序类型、个数、排列顺序上规定上规定了主调函数和被调函数之间信息交换的形式。了主调函数和被调函数之间信息交换的形式。floatfunc(i
13、ntk,intb,floatx)returnk*x+b;2023/1/16北京邮电大学信息与通信工程学院-18-5.2.1 函数的定义 如果函数之间没有需要交换的信息,也可以没有形如果函数之间没有需要交换的信息,也可以没有形参,形参表内写参,形参表内写voidvoid或空着。或空着。intRead()coutResponse;returnResponse;2023/1/16北京邮电大学信息与通信工程学院-19-5.2.1 函数的定义 5.2.1 函数的定义 函数体函数体是实现函数功能的代码部分是实现函数功能的代码部分n变量声明变量声明n完成函数功能的语句两部分完成函数功能的语句两部分从组成结构
14、看,函数体是由程序的三种基本控从组成结构看,函数体是由程序的三种基本控制结构即顺序、选择、循环结构组合而成的。制结构即顺序、选择、循环结构组合而成的。2023/1/16北京邮电大学信息与通信工程学院-20-int Sum(int a,int b)int Total=0;for(int i=a;i=b;+i)Total+=i;return Total;2023/1/16北京邮电大学信息与通信工程学院-21-函数是由函数是由函数名、函数类型、形参表函数名、函数类型、形参表和函数体和函数体四部分组成的四部分组成的,使用时通过使用时通过函数名和参数表调用函数函数名和参数表调用函数.例:例:编写一个函数
15、编写一个函数cubecube,计算整数的立方。调用函数计算整数的立方。调用函数cubecube计算从计算从1 1到到1010相邻整数的立方差。相邻整数的立方差。2023/1/16北京邮电大学信息与通信工程学院-22-尽可能避免在循环体尽可能避免在循环体内调用函数内调用函数!/计算整数的立方计算整数的立方#includeusingnamespacestd;intcube(int);/函数原型声明函数原型声明voidmain()intlast,cb;last=1;coutthedifferenceofcube:endl;for(intx=2;x=10;x+)cb=cube(x);coutcb-la
16、st;last=cb;coutendl;/函数定义函数定义intcube(inty)returny*y*y;2023/1/16北京邮电大学信息与通信工程学院-23-/在三个浮点中找出最大值在三个浮点中找出最大值#includeusingnamespacestd;floatmaximum(floatx,floaty,floatz);/函数原型声明函数原型声明voidmain()floata,b,c;coutabc;/调用调用maximum函数,函数,a,b,c为实际参数为实际参数coutMaximumis:maximum(a,b,c)=y?x:y;max=max=z?max:z;returnma
17、x;5.2.1 函数的定义 注意注意n如果没有函数原型声明,要先写函数定义,如果没有函数原型声明,要先写函数定义,后调用函数。后调用函数。nC+C+语言不允许函数嵌套定义语言不允许函数嵌套定义,所有函数的,所有函数的定义都是自成一体,即函数体中只包含实现定义都是自成一体,即函数体中只包含实现其自身功能的基本语句,不可包含其他函数其自身功能的基本语句,不可包含其他函数的定义体。的定义体。2023/1/16北京邮电大学信息与通信工程学院-25-5.2.2 函数原型引用函数之前,要先指定函数的接口形式引用函数之前,要先指定函数的接口形式n函数原型函数原型n函数定义函数定义函数原型声明格式函数原型声明
18、格式:函数类型函数类型 函数名函数名(形式参数表形式参数表););例例:intMax(inta,intb);函数原型声明函数原型声明使编译器获得关于函数名称、函数类使编译器获得关于函数名称、函数类型、函数形参个数、形参类型和形参顺序的信息。型、函数形参个数、形参类型和形参顺序的信息。函数调用时,编译器根据函数原型声明验证函数调函数调用时,编译器根据函数原型声明验证函数调用正确与否。用正确与否。2023/1/16北京邮电大学信息与通信工程学院-26-5.2.2 函数原型程序中,如果调用自定义的函数,且函数定义在后,程序中,如果调用自定义的函数,且函数定义在后,调用在先,则必须在调用函数之前有函数
19、原型声明。调用在先,则必须在调用函数之前有函数原型声明。voidsubfun1(intx,floata,floatb);/原型声明原型声明main()()intx=20;floata=1.0f,b=0.5f;subfun1(););/函数调用函数调用 voidsubfun1(intx,floata,floatb)/函数定义函数定义2023/1/16北京邮电大学信息与通信工程学院-27-5.2.2 函数原型如果是函数定义在先,调用在后,则不必进行函如果是函数定义在先,调用在后,则不必进行函数原型声明。因为编译器已经从函数定义得到关于数原型声明。因为编译器已经从函数定义得到关于函数的信息。函数的信
20、息。voidsubfun1(intx,floata,floatb)/函数定义函数定义main()()subfun1(i,f1,f2););/函数调用函数调用 2023/1/16北京邮电大学信息与通信工程学院-28-5.2.2 函数原型源文件中,如果在所有函数定义体之外声明函数源文件中,如果在所有函数定义体之外声明函数原型,则该函数可被位于其原型声明之后的所有原型,则该函数可被位于其原型声明之后的所有函数调用。函数调用。2023/1/16北京邮电大学信息与通信工程学院-29-voidsubfun1(););/原型声明原型声明main()()subfun1(););/函数调用函数调用 voidsu
21、bfun2()()subfun1(););/函数调用函数调用 voidsubfun1()/函数定义函数定义main()()voidsubfun1();/函函数数原原型型声明声明 subfun1(););/函数调用函数调用 voidsubfun2()()subfun1(););/函数调用,函数调用,voidsubfun1()2023/1/16北京邮电大学信息与通信工程学院-30-错误,编译错误,编译器不识别器不识别sunfun1标识标识符。符。5.2.2 函数原型库函数的声明在相应库的头文件中,使用库函数时库函数的声明在相应库的头文件中,使用库函数时要包含对应的头文件。要包含对应的头文件。例例:
22、#:#include include 调用数学库函数调用数学库函数:sqrt(sqrt()sin(sin()abs(abs()2023/1/16北京邮电大学信息与通信工程学院-31-2023/1/16北京邮电大学信息与通信工程学院-32-常用常用C+标准库头文件标准库头文件cassert包含增加诊断以帮助程序调试的宏和信息包含增加诊断以帮助程序调试的宏和信息cctype 包含测试某些字符属性的函数原型和将小写字母变为包含测试某些字符属性的函数原型和将小写字母变为 大写字母、将大写字母变为小写字母的函数原型大写字母、将大写字母变为小写字母的函数原型cmath 包含数学库函数的函数原型包含数学库函
23、数的函数原型cstdio 包含标准输入包含标准输入/输出库函数的函数原型及其使用的信息输出库函数的函数原型及其使用的信息cstdlib 包含将数字变为文本、将文本变为数字、内存分配、包含将数字变为文本、将文本变为数字、内存分配、随机数和各种其他工具函数的函数原型随机数和各种其他工具函数的函数原型cstring 包含包含C语言方式的字符串处理函数原型语言方式的字符串处理函数原型ctime 包含操作时间和日期的函数原型和类型包含操作时间和日期的函数原型和类型iostream 包含标准输入包含标准输入/输出函数原型输出函数原型iomanip 包含能够格式化数据流的流操纵运算子的函数原型包含能够格式化
24、数据流的流操纵运算子的函数原型fstream 包含和磁盘文件读包含和磁盘文件读/写有关的函数原型写有关的函数原型5.2.2 函数原型例例5-2 5-2 计算计算3 3个整数绝对值的平均值。个整数绝对值的平均值。2023/1/16北京邮电大学信息与通信工程学院-33-2023/1/16北京邮电大学信息与通信工程学院-34-/例例5-2计算计算3个数绝对值的平均值个数绝对值的平均值#include#includeusingnamespacestd;intCalAbsMean(inta,intb,intc);/自定义函数的原型声明自定义函数的原型声明voidmain()inta,b,c;coutab
25、c;cout绝对值的均值为绝对值的均值为:CalAbsMean(a,b,c)endl;intCalAbsMean(inta,intb,intc)intsum=abs(a)+abs(b)+abs(c);sum/=3;returnsum;运行结果:运行结果:输入输入a,b,c:-1020-30绝对值的均值为绝对值的均值为:205.2.3 return语句returnreturn语语句句使使程程序序执执行行流流程程从从被被调调函函数数返返回回主主调调函数,有两种形式:函数,有两种形式:(1 1)不返回值的形式不返回值的形式 returnreturn;(2 2)返回值的形式返回值的形式 return
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 语言程序设计
限制150内