函数及其应用.ppt
《函数及其应用.ppt》由会员分享,可在线阅读,更多相关《函数及其应用.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关于函数及其应用关于函数及其应用1现在学习的是第1页,共72页 10.1 10.1 函函数的基本概念数的基本概念 一个较大的程序一般由若干个一个较大的程序一般由若干个程序模块程序模块(子程序子程序 )组成组成, 每一个模块每一个模块(子程序子程序)来完成一定的功能。在来完成一定的功能。在C语言中语言中, 子程序的子程序的作用是由函数来实现的。作用是由函数来实现的。 一个一个C程序可由一个程序可由一个主函数和若干个函数主函数和若干个函数构成,由主函构成,由主函数调用其它函数,其它函数也可互相调用。同一个函数可以被数调用其它函数,其它函数也可互相调用。同一个函数可以被一个或多个函数调用任意多次。一
2、个或多个函数调用任意多次。 下图是一个程序中函数调用的示意图:下图是一个程序中函数调用的示意图:现在学习的是第2页,共72页main( )A( )B( )C( )D( )E( )F( )G( )E( )H( )H( )H( )G( )函数调用函数调用示意图:示意图:调用现在学习的是第3页,共72页 (1). 一个源程序文件一个源程序文件由一个或多个函数组成由一个或多个函数组成.一个源程序一个源程序 文件是一个编译单位文件是一个编译单位,而不是以函数为单位进行编译而不是以函数为单位进行编译.说明说明: (2). 一个一个C程序可由程序可由一个或多个源程序文件一个或多个源程序文件组成组成. 这样可
3、以分别进行编写这样可以分别进行编写,编译编译,调试调试. 一个源文件可以为一个源文件可以为 多个多个C程序公用程序公用. (3). 所有函数是平行的所有函数是平行的, 一个函数并不从属于另一个函一个函数并不从属于另一个函 数数 , 函数可以相互调用,但不能调用函数可以相互调用,但不能调用main( )函数函数.现在学习的是第4页,共72页(4). 从从使用角度使用角度来分来分, 函数可分为:函数可分为: 数学函数数学函数 (#include math.h) 字符函数字符函数 (#include ctype.h) 库函数库函数 字符串函数字符串函数 (#include string.h) 输入输
4、出函数输入输出函数 (#include stdio.h) 动态存储分配函数动态存储分配函数 (#include stdlib.h) . 自定义函数自定义函数:现在学习的是第5页,共72页 从函数的从函数的形式形式来分;来分; 无参函数无参函数:主调函数没有数据传给被调函数主调函数没有数据传给被调函数 有参函数有参函数:主调函数可以将数据传给被调函数主调函数可以将数据传给被调函数 空函数空函数: 什么也不干,先占位置,以后扩展功能什么也不干,先占位置,以后扩展功能现在学习的是第6页,共72页一一. 函数定义的一般形式函数定义的一般形式:(自定义函数)(自定义函数) (1). 无参函数的定义形式:
5、无参函数的定义形式: 类型标识符类型标识符 函数名函数名( ) 函数体函数体 函数定义一律函数定义一律不能加分号不能加分号 (;) !说明:说明: 类型标识符是指类型标识符是指函数返回值的类型函数返回值的类型. 如果函数不要返回值,可写上如果函数不要返回值,可写上void.现在学习的是第7页,共72页(2). 有参函数定义:有参函数定义: 类型标识符类型标识符 函数名函数名(形式参数表列形式参数表列) 声明部分声明部分 语句语句 形式参数形式参数例: int add ( int x, int y ) int z; z=x+y; return z; 注注: 返回值返回值z 的类型的类型(int)
6、应与类型标识符统一。应与类型标识符统一。现在学习的是第8页,共72页1、函数参数与函数值;、函数参数与函数值;(1)形参与实参:形参与实参:例:例:main( ) int a,b,c; scanf(“%d, %d”, &a, &b); c=max(a, b); printf(“max is %d”, c); int max(int x, int y) /*定义有参函数定义有参函数max*/ int z; z=xy ? x : y; return(z); x,y为形参a,b为实参10.2 函数的参数现在学习的是第9页,共72页b. 实参实参可以是常量、变量、或表达式可以是常量、变量、或表达式,但
7、要求有确定值但要求有确定值. 如如: max(3, a+b) ; c. 实参与形参实参与形参的类型应一致,一的类型应一致,一 一对应。一对应。说明说明:a. 形参变量形参变量(上例中的上例中的x,y), 在在未调用未调用时,并不占时,并不占 用存储单元,当进行函数用存储单元,当进行函数调用时调用时,形参才分配内存,形参才分配内存 单元,调用结束后,形参就释放掉。单元,调用结束后,形参就释放掉。现在学习的是第10页,共72页d. 实参对形参的数据传递是实参对形参的数据传递是单向传值单向传值,只能是由实参传,只能是由实参传 给形参,而不能相反进行。给形参,而不能相反进行。 实参、形参在内存中实参、
8、形参在内存中,占据不同单元。占据不同单元。 2 a b 3 2 x 3 y 即使形参单元中的值发即使形参单元中的值发生变化,生变化,也不会影响也不会影响实参单实参单元的值元的值. 函数调用后,形参单元释放掉函数调用后,形参单元释放掉,实参单元仍保留。,实参单元仍保留。现在学习的是第11页,共72页例10.9 阅读一下程序,写出程序运行结果#include int swap(int x, int y)int temp;temp=x;x=y;y=temp;return 0;int main()int a, b;scanf(%d%d, &a, &b);swap(a,b);printf(%d,%dn,
9、a, b);return 0;Ch10_10_9.c 即使形参单元中的值发生即使形参单元中的值发生变化,变化,也不会影响也不会影响实参单实参单元的值元的值. 两变量进行交换两变量进行交换.现在学习的是第12页,共72页2. 函数的返回值与函数的返回值与return语句:语句: 执行执行C语言程序就是调用一个个函数,函数被调用语言程序就是调用一个个函数,函数被调用 时,可以返回某一个值作为该函数的值时,可以返回某一个值作为该函数的值(供主函数使用供主函数使用)。需要返回值时,在函数中返回的地方使用需要返回值时,在函数中返回的地方使用return语句语句: return(表达式)表达式); 这里表
10、达式的值就是函数的返回值。这里表达式的值就是函数的返回值。现在学习的是第13页,共72页说明:说明: a. return 语句后面的括号可省去:语句后面的括号可省去: 如:如: return(z); return z ; return 后面可以是一个表达式后面可以是一个表达式. 现在学习的是第14页,共72页 b. 当函数不需要带回返回值,当函数不需要带回返回值,C语言有二种方法处理语言有二种方法处理 : . .使用不带表达式的使用不带表达式的return语句,如语句,如: return; . .连连return也不用,这是因为函数末尾也不用,这是因为函数末尾,隐含隐含一个一个return 语
11、句语句 ,当遇到后面的大括号当遇到后面的大括号“” , 就把控制权交给主调就把控制权交给主调 函数。函数。现在学习的是第15页,共72页 为了明确表示不带回值,可用为了明确表示不带回值,可用“void“定义。定义。 如:如: void printstar( ); 这样可以保证函数不带回任何值这样可以保证函数不带回任何值.c. 若函数不指定带值返回,并不是不返回什么值,可能若函数不指定带值返回,并不是不返回什么值,可能 返回一个返回一个不定值不定值。 因为不考虑使用,即使返回是不定值因为不考虑使用,即使返回是不定值,也无多大关系。也无多大关系。 现在学习的是第16页,共72页#includein
12、t add(int x, int y)int z;z=x+y;return z;int main()int a, b, c;scanf(%d %d, &a, &b);c=add(a,b);printf(c=%dn, c);return 0; 例例:10.1 函数值传递的例子函数值传递的例子.(P149) 函数在被调用前函数在被调用前必须先必须先定义定义或或说明说明!Ch10_10_1.c现在学习的是第17页,共72页例例:10.2 函数地址传递的例子函数地址传递的例子.(P150) 输入一个由数字组成的字符串输入一个由数字组成的字符串,转换成一个整数转换成一个整数.#includeint ct
13、oi(char *p) int sum=0; while(*p) sum=sum*10; sum=sum+(*p-0); p+; return sum;int main( ) char str5; int x; printf(“string is :n); scanf(%s,str); x=ctoi(str); printf(“integer is %dn,x); return 0;数组名作为数组名作为函数的参数函数的参数 Ch10_10_2.c*p-0 把一个字符把一个字符数字转成数字数字转成数字.现在学习的是第18页,共72页3、函数的调用、函数的调用:(1). 函数调用的方式:函数调用的
14、方式: 有以下三种函数调用方式:有以下三种函数调用方式: a. 函数语句函数语句: 函数作为一条语句函数作为一条语句, 不要求函数带回值不要求函数带回值,完成一定的,完成一定的 功能、操作。如:功能、操作。如: printstar( ); b. 函数表达式函数表达式: 函数调用出现在一个表达式中。函数调用出现在一个表达式中。 如如: c=z*max(a,b); 这时要求函数这时要求函数带回一个确定的值带回一个确定的值, 以参加运算。以参加运算。现在学习的是第19页,共72页 c. 函数参数函数参数: 如:如:printf(“%d” , max(a,b) ); max(a,b) 作为作为 pri
15、ntf函数的一个参数。函数的一个参数。 现在学习的是第20页,共72页10.3 10.3 系统函数的应用系统函数的应用 C语言提供了十分丰富的库函数语言提供了十分丰富的库函数.这些这些函数函数可分为:可分为: 1. 数学函数数学函数,如如: sin(), sqrt() 函数等函数等.它们的包含文件是它们的包含文件是: “math.h”. 2. 字符串函数字符串函数,如如: gets(),strcmp()函数等函数等.它们的包含文件是它们的包含文件是: “string.h”. 3. 输入输出函数输入输出函数,它们的包含文件是它们的包含文件是: “stdio.h”. 现在学习的是第21页,共72页
16、10.3.1 数学函数数学函数 常用的数学函数有常用的数学函数有: (1). sqrt(): double sqrt(double x); 计算计算 ; x应应=0 (2). fabs(): double fabs(double x); 计算计算 x 的的绝对值绝对值 x (3). pow(): double pow(double x,double y); 计算计算xy 的值的值 (4). exp(): double exp(double x); 计算计算 ex 的值的值现在学习的是第22页,共72页例例10.3 求求z=xy+c 的值,在的值,在C语言中语言中xy可调用系统函数可调用系统函数
17、 pow()函数来求得。函数来求得。#include #include /必须加入数学库头文件必须加入数学库头文件int main()double x, y, z, c;printf(Please input x y cn);scanf(%lf%lf%lf, &x, &y, &c);z=pow(x,y)+c;printf(z=%lfn, z);return 0;C+另一注解方法另一注解方法现在学习的是第23页,共72页例例10.410.4 利用循环的方法产生利用循环的方法产生11001100间的间的1010个随机数,并个随机数,并在屏幕上显示在屏幕上显示. .关于关于 rand() 随机函数随
18、机函数: rand()会返回一随机数值会返回一随机数值,范围在范围在0至至RAND_MAX 间间. 现在学习的是第24页,共72页#include #includevoid main( ) printf( RAND_MAX =%ld n,RAND_MAX);说明说明: RAND_MAX是一宏定义值是一宏定义值. 是系统最大的被是系统最大的被rand()返回的返回的值值. 其值可用下列程序输出其值可用下列程序输出:视系统不同而不同视系统不同而不同(32767).现在学习的是第25页,共72页2. srand(seed)函数函数: srand()用来设置用来设置rand()产生随机数时的产生随机数
19、时的随机数种子随机数种子。参。参数数seed必须是个整数必须是个整数,通常可以利用通常可以利用time(0)的返回值来当的返回值来当做做seed. 如果每次如果每次seed都设相同值,都设相同值,rand()所产生的随机数值每次所产生的随机数值每次就会一样。就会一样。 3. time() 函数返回从函数返回从1970年开始经历时间的秒数。年开始经历时间的秒数。现在学习的是第26页,共72页例例10.4 利用系统函数利用系统函数rand(),此函数产生,此函数产生1100间的间的10个随机数,此函数在头件个随机数,此函数在头件 stdlib.h进行了声明进行了声明.#include#includ
20、e #include int main()int i,j;srand(time(0);for(i=0; i S2 函数返回值为函数返回值为0 S1 S2 函数返回值函数返回值0现在学习的是第31页,共72页例10.5 从键盘输入两个字符串,把两个字符串连接后输出到屏幕#include #include int main()char s180, s280;gets(s1);gets(s2);strcat(s1,s2);puts(s1);return 0;gets()以回车结束输入以回车结束输入.ch10_5.c现在学习的是第32页,共72页例例10.610.6从键盘输入一个字符串,求这一字符串长
21、度从键盘输入一个字符串,求这一字符串长度#include #include int main()int x;char str80;gets(str);x=strlen(str);printf(该字符串长度:该字符串长度:%dn, x);return 0;ch10_6.c现在学习的是第33页,共72页10.3.3 字符操作函数与转换函数1. isalnum(): 函数原型函数原型: int isalnum(int ch); 检查检查ch是否为是否为字母或数字字母或数字. 是字母或数字返回是字母或数字返回1, 否则返回否则返回0.2. isalpha(): 函数原型函数原型: int isalph
22、a(int ch); 检查检查ch是否为是否为字母字母. 是字母返回是字母返回1, 否则返回否则返回0.现在学习的是第34页,共72页3. islower(): 函数原型: int islower(int ch); 检查检查ch是否为是否为小写字母小写字母(az) . 是返回是返回1, 否则返回否则返回0.4. isxdigit(): 函数原型: int isxdigit(int ch); 检查检查ch是否为一个是否为一个十六进制字符十六进制字符(09或或af或或AF). 是返回是返回1, 否则返回否则返回0.现在学习的是第35页,共72页 5. atoi() 函数原型函数原型: int at
23、oi(char *str) 函数功能函数功能: 将将(一含有数字内容的一含有数字内容的)字符串转换成一个整数数值字符串转换成一个整数数值. 头文件头文件: #include #include int main() int n; char str =12345.78; n=atoi(str); printf(string=%s integer=%dn,str,n); return 0; 现在学习的是第36页,共72页例例10.710.7 从键盘输入一些字符,输出其中的大写字符与十六进从键盘输入一些字符,输出其中的大写字符与十六进制字符,当输入字符制字符,当输入字符 结束字符结束字符#includ
24、e #include int main()char ch;while( ( ch=getchar() ) != )if(isupper(ch) | isxdigit(ch) ) printf(%3c, ch);printf(n);return 0;ch10_7.c现在学习的是第37页,共72页10.4 10.4 自定义函数自定义函数 C语言允许用户自定义函数语言允许用户自定义函数. 例如例如: 下面是一个自定义函数下面是一个自定义函数,功能是求两个整数之和功能是求两个整数之和. int add(int x,int y) int z; z=x+y; return z; 现在学习的是第38页,共7
25、2页 关于对被调用函数的声明和函数原型关于对被调用函数的声明和函数原型: 在一个函数中调用另一个函数在一个函数中调用另一个函数(即被调函数即被调函数)需要具备哪些条件需要具备哪些条件? a. 函数要存在函数要存在(库函数或自定义函数库函数或自定义函数). 此外还要此外还要: b. 如果是如果是库函数库函数,一般应在文件开头用一般应在文件开头用#include命令把命令把 相关函数的一些信息包括进去相关函数的一些信息包括进去. 现在学习的是第39页,共72页 如果用户如果用户自己定义自己定义了一个函数,同时主调函数与被了一个函数,同时主调函数与被 调函数调函数在在同一源文件中同一源文件中: 一般
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 及其 应用
限制150内