c语言函数章节经典教案.ppt
《c语言函数章节经典教案.ppt》由会员分享,可在线阅读,更多相关《c语言函数章节经典教案.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、西安电子科技大学计算机学院西安电子科技大学计算机学院2引言引言例:求一些圆盘的面积,圆盘半径分别为:例:求一些圆盘的面积,圆盘半径分别为:3.243.24、2.132.13、0.8650.865、3.7463.746、12.336412.3364、8.4218.421/设圆周率为设圆周率为 3.14163.1416,可写出下面程序:,可写出下面程序:#include int main () printf(radius:%f, area:%fn, 3.24, 3.24 * 3.24 * 3.1416); printf(radius:%f, area:%fn, 2.13, 2.13 * 2.12
2、* 3.1415); 繁琐的东西很容易弄错,不易修改繁琐的东西很容易弄错,不易修改标准函数有限,需求无限。标准函数有限,需求无限。西安电子科技大学计算机学院西安电子科技大学计算机学院3引言引言如果有求圆面积的函数如果有求圆面积的函数double c_area(double r)如果有打印圆面积的函数如果有打印圆面积的函数 pc_area(double r)int main () printf(radius:%f, area:%fn, 3.24, c_area(3.24) ); printf(radius:%f, area:%fn, 2.13, c_area(2.13) ); 函数能使程序变短,
3、函数能使程序变短,变得易写变得易写/易理解易理解/易修改易修改int main () pc_area(3.24); pc_area(2.13); 西安电子科技大学计算机学院西安电子科技大学计算机学院4引言引言半径半径3.243.24高高2.42.4的圆锥体积:的圆锥体积:外半径外半径5.35.3,内半径,内半径3.073.07,高,高4.24.2的空心圆的空心圆柱体积:柱体积:2.4 * c_area( 3.24 ) / 3.0 ( c_area(5.3) - c_area(3.07) )*4.2西安电子科技大学计算机学院西安电子科技大学计算机学院5目标目标学会把常用的代码定义为函数学会把常用
4、的代码定义为函数学会在程序中使用函数学会在程序中使用函数掌握掌握C C语言提供的常用库函数语言提供的常用库函数了解递归的基本原理了解递归的基本原理西安电子科技大学计算机学院西安电子科技大学计算机学院6主要内容主要内容函数定义函数定义函数调用函数调用C C语言常用函数语言常用函数函数与递归函数与递归变量作用域变量作用域西安电子科技大学计算机学院西安电子科技大学计算机学院74.1 4.1 函数定义函数定义将实现某个功能的代码变成函数将实现某个功能的代码变成函数西安电子科技大学计算机学院西安电子科技大学计算机学院8函数定义函数定义把一段把一段计算计算定义成函数并给以命名,定义定义成函数并给以命名,定
5、义后就可以后就可以在任何需要的地方通过名字调用在任何需要的地方通过名字调用。/定义函数定义函数 c_area c_area 的程序片段:的程序片段:double c_area (double r) return r * r * 3.1416;9定义函数的要素定义函数的要素函数头函数头函数名:使用函数需要的名称,合法标识符函数名:使用函数需要的名称,合法标识符返回值类型返回值类型函数计算结果的数据类型函数计算结果的数据类型参数表参数表完成计算需要的数据(完成计算需要的数据(数量和类型数量和类型)函数体函数体double c_area ( double r ) return r * r * 3.1
6、416;返回值类型返回值类型 函数名函数名参数表参数表函函数数体体函函数数头头实现函数功能的代码,实现函数功能的代码,由一对大括号包围由一对大括号包围西安电子科技大学计算机学院西安电子科技大学计算机学院10函数返回值函数返回值函数返回值表示函数内代码计算的结果函数返回值表示函数内代码计算的结果一个函数一个函数最多只能有一个最多只能有一个返回值,返回值返回值,返回值通常是计算结果或者表示计算状态的信息,通常是计算结果或者表示计算状态的信息,由调用者使用由调用者使用如果函数有返回值函数如果函数有返回值函数必须指定返回值类必须指定返回值类型型,如果函数不需要返回值,如果函数不需要返回值必须必须使用使
7、用voidvoid作为函数返回值类型。作为函数返回值类型。函数返回值通过函数返回值通过returnreturn语句返回,语句返回,returnreturn语句一旦执行,整个函数就结束。语句一旦执行,整个函数就结束。西安电子科技大学计算机学院西安电子科技大学计算机学院11函数返回值函数返回值一个函数中可以有多条一个函数中可以有多条returnreturn语句,语句,但但只会执行其中一条只会执行其中一条。returnreturn语句形式:语句形式:return return 表达式表达式; ;returnreturn语句中表达式求值的类型应该语句中表达式求值的类型应该和函数返回值类型一致,如果不一
8、致和函数返回值类型一致,如果不一致会自动进行类型转换会自动进行类型转换返回值类型为返回值类型为voidvoid时,不需要时,不需要returnreturn语句或者写成语句或者写成return;return;12函数定义示例函数定义示例void pc_area(double r) printf(r = %f, S = %fn, r, 3.14159265 * r * r);double c_area (double r) return r * r * 3.1416;int max(int a, int b) if(ab) return a; return b;int compare( int x
9、, int y ) if( x = y ) return 0; else if( x y ) return 1; else return -1;13关于关于returnreturn语句语句double c_area (double r) return r * r * 3.1416;int main() double v=2.4 * c_area( 3.24 ) / 3.0; printf(v=%fn,v);int main() double s = c_area( 3.24 ); double v=2.4 * s / 3.0; printf(v=%fn,v);需要注意返回值类型为需要注意返回值
10、类型为voidvoid的函数不能放在表达式中参的函数不能放在表达式中参与运算与运算西安电子科技大学计算机学院西安电子科技大学计算机学院14函数参数表函数参数表函数可以有函数可以有0 0个或多个参数,这些参数称为个或多个参数,这些参数称为形式形式参数参数每个参数必须指明每个参数必须指明类型类型和和参数名称参数名称函数参数是函数内的函数参数是函数内的局部变量局部变量,只在函数体内,只在函数体内有效有效函数参数只有在函数被调用时才有效函数参数只有在函数被调用时才有效函数参数的初始值由调用者传入(通过实际参函数参数的初始值由调用者传入(通过实际参数以值拷贝的方式传入)数以值拷贝的方式传入)西安电子科技
11、大学计算机学院西安电子科技大学计算机学院15形参和实参形参和实参形参:在函数定义中括号内的标识符,与函数形参:在函数定义中括号内的标识符,与函数调用时的实参一一对应调用时的实参一一对应实参:在调用函数的括号中使用的表达式,它实参:在调用函数的括号中使用的表达式,它的值被传入函数并赋值给函数的对应形参。的值被传入函数并赋值给函数的对应形参。西安电子科技大学计算机学院西安电子科技大学计算机学院16形参和实参形参和实参#include /定义函数定义函数double c_area (double r ) return r * r * 3.1416;int main () double v,radiu
12、s=3.24; /调用函数调用函数 v=2.4 * c_area( radius ) / 3.0; return 0;形参形参实参实参函数调用时,实参radius的值(3.24)传递给形参r西安电子科技大学计算机学院西安电子科技大学计算机学院17函数定义不能嵌套函数定义不能嵌套#include #include double c_area (double r) return pow(r, 2) * 3.1416;int main () double v; v=2.4 * c_area( 3.24 ) / 3.0; return 0;#include #include int main () d
13、ouble c_area (double r) return pow(r, 2) * 3.1416; double v; v=2.4 * c_area( 3.24 ) / 3.0; return 0;西安电子科技大学计算机学院西安电子科技大学计算机学院184.2 4.2 函数调用函数调用西安电子科技大学计算机学院西安电子科技大学计算机学院19调用系统函数调用系统函数包含必要的头文件,包含必要的头文件,其本质是将其本质是将函数原型函数原型添加到程序中添加到程序中在需要的地方使用函在需要的地方使用函数,传入类型和数量数,传入类型和数量正确的实际参数,函正确的实际参数,函数返回值可以作为表数返回值可
14、以作为表达式的一部分达式的一部分#include #include int main() double sum=0; int n=1; while(n=100) sum=sum+ sin(1.0/n) ; n=n+1; printf(sum=%fn,sum); return 0;函数原型就是函数原型就是函数头部加上分号函数头部加上分号,其作用是告诉编译器函数应该以什其作用是告诉编译器函数应该以什么形式调用么形式调用西安电子科技大学计算机学院西安电子科技大学计算机学院20调用调用自定义自定义函数函数方法方法1 1(函数定义(函数定义放在调用函数之放在调用函数之前):前):在需要的地方使用在需要的
15、地方使用函数,传入类型和函数,传入类型和数量正确的实际参数量正确的实际参数,函数返回值可数,函数返回值可以作为表达式的一以作为表达式的一部分部分#include /c_area/c_area函数在调用前定义函数在调用前定义double c_area (double r) return r * r * 3.1416;int main () double v; printf(radius:%f, area:%fn, 3.24, c_area(3.24) ); v=2.4 * c_area( 3.24 ) / 3.0; return 0;西安电子科技大学计算机学院西安电子科技大学计算机学院21调用调
16、用自定义自定义函数函数方法方法2 2(函数定义放(函数定义放在调用函数之后):在调用函数之后):在在函数调用之前函数调用之前给给出出函数原型函数原型在需要的地方使用在需要的地方使用函数,传入类型和函数,传入类型和数量正确的实际参数量正确的实际参数,函数返回值可数,函数返回值可以作为表达式的一以作为表达式的一部分部分#include /函数原型在调用之前函数原型在调用之前double c_area (double r);int main () double v; printf(radius:%f, area:%fn, 3.24, c_area(3.24) ); v=2.4 * c_area( 3
17、.24 ) / 3.0; return 0;/函数定义在调用之后函数定义在调用之后double c_area (double r) return r * r * 3.1416;西安电子科技大学计算机学院西安电子科技大学计算机学院22函数调用的若干问题函数调用的若干问题C C语言是一个函数式语言,所有可执行语语言是一个函数式语言,所有可执行语句都必须放在某个函数体内句都必须放在某个函数体内调用函数的函数称为调用函数的函数称为主调函数主调函数,被调用的,被调用的函数称为函数称为被调函数被调函数当函数调用发生时,主调函数暂停,程序当函数调用发生时,主调函数暂停,程序控制转入被调函数,被调函数执行结束
18、后,控制转入被调函数,被调函数执行结束后,主调函数继续主调函数继续西安电子科技大学计算机学院西安电子科技大学计算机学院23函数调用的若干问题函数调用的若干问题#include #include double c_area (double r) return pow(r, 2) * 3.1416;int main () double v; v=2.4 * c_area( 3.24 ) / 3.0; return 0;main函数函数c_area函数函数pow函数函数c_area( 3.24 )pow(r, 2)西安电子科技大学计算机学院西安电子科技大学计算机学院24参数传递机制参数传递机制形式参
19、数在函数调用时才分配存储空间,形式参数在函数调用时才分配存储空间,并接受实际参数的值并接受实际参数的值实际参数可以为复杂的表达式,在函数调实际参数可以为复杂的表达式,在函数调用前获得计算用前获得计算形式参数与实际参数可同名,也可不同名形式参数与实际参数可同名,也可不同名西安电子科技大学计算机学院西安电子科技大学计算机学院25参数传递机制参数传递机制参数较多时,实际参数值逐一赋值,它们参数较多时,实际参数值逐一赋值,它们必须保持数目、类型、顺序的一致必须保持数目、类型、顺序的一致参数的赋值过程单向不可逆,函数内部对形参数的赋值过程单向不可逆,函数内部对形式参数值的修改不会反映到实际参数中式参数值
20、的修改不会反映到实际参数中函数参数一般为函数输入集的一部分,函数函数参数一般为函数输入集的一部分,函数输出集一般使用返回值表示,只有使用特殊输出集一般使用返回值表示,只有使用特殊的手段的手段( (指针指针/ /数组数组) )才可以将函数参数作为函才可以将函数参数作为函数输出集的一部分数输出集的一部分西安电子科技大学计算机学院西安电子科技大学计算机学院26参数传递机制参数传递机制void swap( int a, int b ) int t; t = a; a = b; b = t;int main() int a=5, b=3; printf( before swap: a= %d; b= %
21、dn, a, b ); swap(a, b); printf( after swap: a= %d; b=%dn, a, b ); return 0;swap函数中的a和b与main函数中的a和b是什么关系?两个printf输出的结果是什么?swapswap函数数据区函数数据区mainmain函数数据区函数数据区void swap( int a, int b ) int t; / 2 t = a; a = b; b = t; / 3int main() int a=5, b=3; / 1 swap(a, b); / 4 return 0;5a0 x0012ff24内存地址值变量3b0 x001
22、2ff283a0 x0012ff245b0 x0012ff285a0 x0012ff7c3b0 x0012ff78内存地址值变量5a0 x0012ff7c3b0 x0012ff78西安电子科技大学计算机学院西安电子科技大学计算机学院28函数示例函数示例1. 1. 请写一个程序,给出指定整数范围请写一个程序,给出指定整数范围11,1000010000内的所有完数。判断是不是完数用内的所有完数。判断是不是完数用一个函数完成。一个函数完成。int isPerfectNumber(int n) int i; for(i=1,sum=0;i=n/2;i+) if(n%i=0) sum+=i; retur
23、n sum=n;西安电子科技大学计算机学院西安电子科技大学计算机学院29函数示例函数示例2. 2. 写一个函数求两个整数的最大公约数写一个函数求两个整数的最大公约数int gcd( int m, int n) int i; int min=m1;i-) if(m%i=0&n%i=0)break; return i;西安电子科技大学计算机学院西安电子科技大学计算机学院30函数示例函数示例3. 3. 写一个函数判写一个函数判断一个数是不是素断一个数是不是素数数, ,用函数返回值用函数返回值表示判断结果表示判断结果( (非非0 0表示是素数,表示是素数,0 0 表表示不是素数示不是素数) )int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 函数 章节 经典 教案
限制150内