第5章函数及其应用ppt课件_第1页
第5章函数及其应用ppt课件_第2页
第5章函数及其应用ppt课件_第3页
第5章函数及其应用ppt课件_第4页
第5章函数及其应用ppt课件_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第5章 函数及其运用5.1 5.1 函数种类函数种类5.1.1 5.1.1 命令函数命令函数例如:例如:getchar(),putchar()getchar(),putchar()等。等。5.1.25.1.2规范库函数规范库函数例如:例如: fabs(),pow(),rand(),sin(x),sqrt(),fexp()fabs(),pow(),rand(),sin(x),sqrt(),fexp()5.1.35.1.3自定义函数自定义函数 5.2 自定义函数的概念及运用方法自定义函数的概念及运用方法例例1:求两个数中的最大数:求两个数中的最大数#include int imax (int m

2、, int n)return (mn ? m:n); void main() int a=6,b=9; coutimax(a,b); 例2:求x的n次方#include iostream.hvoid main() float mpow(float ,int); coutpow=mpow(3.,3)endl; float mpow(float a,int n)int i; float k=1; for(i=1;i=n;i+) k=k*a; return (k); 5.3 5.3 自定义函数的三种方式自定义函数的三种方式5.3.1 5.3.1 无参函数,例如无参函数,例如main(),getcha

3、r()main(),getchar()等。等。 主函数与子函数之间不传输数据。主函数与子函数之间不传输数据。例:输出字符四方形例:输出字符四方形 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *void print()void print()int i;int i; for(i=1;i5;i+) for(i=1;i5;i+) cout“ coutr; res(a, b, r); coutr=rsetw(10)a=asetw(10)b=be

4、ndl;float res(float &a,float &b,float r)a=3.14159*r*r; b=2*3.14159*r; return 0; 例:编写函数(过程、子程序程序求n的阶乘 f(n)求三个数的最大数(可以求多个数的最大数)求两个正整数的最大公约数(可以求多个数的最大公约数) f (m,n)求n+(n+1)+(n+2)+(n+k)用子函数完成x2,x3,xn5.5 C+5.5 C+库函数库函数 被直接调用的函数称为库被直接调用的函数称为库( (内部内部) )函数。函数。函数名函数名 函数原型函数原型 要用到的头文件要用到的头文件abs() int ab

5、s(int n) stdlib.habs() int abs(int n) stdlib.hfabs() double abs(double x) math.hfabs() double abs(double x) math.hcos() double cos(double x) math.hcos() double cos(double x) math.hexp() double exp(double x) math.hexp() double exp(double x) math.hlog() double log(double x) math.hlog() double log(doub

6、le x) math.hpow() double pow(double x, double y) math.hpow() double pow(double x, double y) math.hsqrt() double sqrt(double x) math.hsqrt() double sqrt(double x) math.hsin() double sin(double x) math.hsin() double sin(double x) math.htan() double tan(double x) math.htan() double tan(double x) math.h

7、kbhit() int kbhit() conio.hkbhit() int kbhit() conio.hexit() void exit(int n) stdlib.hexit() void exit(int n) stdlib.hrand() double rand(double x) stdlib.hrand() double rand(double x) stdlib.h5.6 作用域和存储类作用域和存储类5.6.1 作用域作用域1. 块作用域块作用域 块内阐明的变量只能在本块有效。块内阐明的变量只能在本块有效。2. 文件作用域文件作用域 文件作用域就是全局作用域。文件作用域就是全局

8、作用域。例:读程序,察看全局变量和部分变量的关系#include int i; /全局变量,文件作用域void main() i=5; /文件作用域的i赋初值 /子块1 int i; /部分变量,块作用域 i=7; couti=iendl; /输出7 couti=iendl;/输出5 3. 函数原型作用域 函数的作用域只限定在函数原型的函数中。4. 函数作用域 在函数内均有效, 不受块作用域的限制, 只需标号属于函数作用域在goto语句中运用。5.6.2 存储类 1. 部分变量及其概念形参是部分变量。在一个复合语句中定义的变量。在一个函数中定义的变量。2. 全局(外部)变量及其概念函数外部定义

9、的变量。用extern 阐明的变量。3. 动态自动变量程序运转期间,分配内存单元,运转终了,内存单元就释放。形参、部分变量都是动态变量。动态变量用auto阐明或省略。4. 静态变量调用函数终了,变量值保管,下次调用值仍存在。静态变量用static 阐明。数组只需定义成静态时,才干初始化。静态变量自动赋0值。何时需求定义静态数组:保管函数的变量值和数组初始化。例: 读程序,了解静态变量#include #include void main() int count(int); do count(0); while(!kbhit(); coutFunction COUNT() have been c

10、alledcount(1)timesn int count(int i) static int c=0; if(i) return c; else return +c; return 0;阐明:未从键盘上按下键时,反复循环调函数count(), C不断自加,从键盘上一旦按下键时,终了循环,输出C值。5. 存放器变量作用:存取速度快。特点:只允许运用三个存放器变量,且必需是形参和部分变量才干运用。用法:用 register 阐明。5.7 5.7 内联函数内联函数 大量、多次调用函数,要占计算机很多时间,大量、多次调用函数,要占计算机很多时间,为了用空间换时间,才用内联函数。只需在定义为了用空间换

11、时间,才用内联函数。只需在定义函数,或者对函数原型阐明时,在行首加上函数,或者对函数原型阐明时,在行首加上inline inline 即可。即可。例:求圆面积例:求圆面积#include#includeinline double calArea(double radius) inline double calArea(double radius) return 3.14 return 3.14* *radiusradius* *radius;radius;void main() double r=3.0; /r是圆的半径double area;area=calArea(r); /调用内联函数,

12、编译时此处被交换为calArea函数体语句coutareaendl;return 0; 5.8 带有缺省参数的函数带有缺省参数的函数 函数阐明时,先对形参初始化,调用函数阐明时,先对形参初始化,调用函数时,假设给实参,就运用实参,否那函数时,假设给实参,就运用实参,否那么运用阐明时给出的初始值。么运用阐明时给出的初始值。例:求四方体体积例:求四方体体积#include #include int get_volume(int length, int width = 2, int height = 3);void main()int x = 10, y = 12, z = 15;cout Some

13、 box data is ;cout get_volume(x, y, z) endl;cout Some box data is ;cout get_volume(x, y) endl;cout Some box data is ;cout get_volume(x) endl;cout Some box data is ;cout get_volume(x, 7) endl;cout Some box data is ;cout get_volume(5, 5, 5) endl;return 0;int get_volume(int length, int width, int heigh

14、t) coutsetw(5)lengthsetw(5)widthsetw(5)height ;return (length * width * height); 阐明:默许参数的阐明一定要放在函数运用之前。对形参的初始化可以是恣意表达式。如部分形参初始化,必需自右向左。假设函数阐明出如今不同程序块, 允许提供和运用不同的默许值。5.9 参数数目可变函数 根据需求,函数的参数可多可少,函数参数多少可变的函数称参数数目可变函数。例:从n个数中找出最大数#include #include int main()int a,b,c,d,e;int max(int,int.); cinabcde; cou

15、tThe bigger between a and b is max(2,a,b)endl; coutThe bigger in the five number is max(5,a,b,c,d,e)endl;return 0;int max(int num,int integer.) va_list ap; int m=integer; va_start(ap,integer); for(int i=1;im) m=t; coutiendl; va_end(ap); return m; 阐明:必需运用头文件stdarg.h。定义函数和函数原型的书写要求。要用到三个公用函数和一个类型定义关键字

16、: va_start, va_arg, va_end和va_list 。请将此题改为务虚型数最大值。 5.10 函数重载overload一个函数可以当几个函数运用。根据形参的类型,调用不同的函数。函数定义不能少。例: 用一个函数add( ) 实现两个整型数相加和两个实型数相加#includevoid main(void) int m, n;double x, y;int add(int m, int n);double add(double x, double y);coutmn;coutinteger “m+n=add(m,n)endl;coutxy;coutreal number x+y=

17、 add(x,y)endl;int add(int m, int n) return m+n; double add(double x, double y) return x+y; 5.11 5.11 外部函数外部函数能被其他文件调用的函数称为外部函数。能被其他文件调用的函数称为外部函数。外部函数要用外部函数要用extern extern 阐明。阐明。5.12 5.12 函数递归函数递归函数递归的两个根本条件函数递归的两个根本条件1. 1. 边境条件边境条件2. 2. 递归表达式递归表达式3. 3. 函数本身调用本身函数本身调用本身举例:计算 n! (c=f(n-1)*n)#include l

18、ong fac(int n) long f;if (n=1) c=1;else c=fac(n-1)*n;return(f);void main()long fac(int n);int n;long y;coutn;y=fac(n);coutn!=yendl;1. 计算 1+2+3+ +1002. 计算 0,1,1,2,3,5,8,. 第前20项return (f(n-1)+f(n-2);5.13 编译予处置概念:在对程序编译之前就进展交换处置,称予处置(有三种: 嵌入指令文件包含、宏定义、和条件编译)。用途:1. 有利于程序的移植与兼容.2. 添加程序的兼容性.3. 减少程序的运转时间4.

19、 减少程序的长度5.13.1 嵌入指令#include 方法:建立多个*.cpp文件,按执行顺序放在#include 中。5.13.2 宏定义方法与用途1. 不带参数的宏定义用一个标识符代表一个字符串或一个常量,不做语法检查。#define PI 3.14159 宏定义的标识符常运用大写字母,以有别于变量#define N 100 (N可以用作数组的下标)#define R 3#define A PI*R*R#define C CONPUTER#define pr cin#define N “n 例: prxN2. 带参数的宏定义用一个标识符代表一个函数,不做语法检查。#define PI 3.14159#define circle (A,L,R) A=PI*R*R;L=2*PI*PI #define MAX(x,y) (x)(y) ? (x) ? (y)#define mul(x1,x2) x1*x2 / 留意x1*(x2)例:定义一个求两个数之积的宏名mul, 且求:2+3,6+2和3.1,3的积#define mul(x1,x2) x1*x2main() coutmul(2+3,6+2)mul(3.1, 2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论