北京大学c++教程.ppt

第五章 C++函数 二、调用方式 1、作为表达式的函数调用。 (被调用的函数必须有返回值) 如:double result; result=sqare(5.0); 2、作为语句的函数调用。(作为语句的函数调用的功能由函数的副作用体现) 如:sqare(5.0); 第五章 C++函数 三、函数的递归调用 1、递归调用的定义: 函数直接或间接地调用自身。 2、递归算法必须满足的三个条件: (1)有明确的结束递归的条件。 (2)要解决的问题可以转化为相对简单 的同类型的问题。 (3)随着问题的逐次转换,最终能达到 结束递归的条件。 第五章 C++函数 例: n!= #includeiostream.h int fact(int n) {if(n=1) return 1; return n*fact(n-1);} void main( ){coutfact(4);} 1 n=0或n=1 n×(n-1)! n1 fact(4) n=4 4*fact(3) n=3 3*fact(2) n=2 2*fact(1) n=1 1 2 6 24 函数fact的递归调用过程: 第五章 C++函数 第五章 C++函数 §5.3 函数原形与头文件 一、函数原形 1、格式:类型修饰符 函数名(形式参数表); 2、作用:函数原形为函数调用提供所需的接 口信息。 ☆若函数定义在函数调用之前,则函数原形 可有可无。 ☆若函数定义在函数调用之后,则必须在函 数调用之前使用函数原形。 第五章 C++函数 二、头文件 1、头文件不仅用来保存系统函数的原形, 而且可保存用户自定义的函数原形。 2、多文件应用系统一般由3个文件组成: 描述函数原形的头文件。 定义函数的程序文件。 调用函数的主程序文件。 第五章 C++函数 §5.4 函数调用中的参数传递 一、传值方式 1、把实在参数的值传递给形式参数。 2、在传值方式下,对形式参数的改变不会 影响到对应的实在参数。 例:double DOUBLE(double n) {n*=2; return n;} void main( ) {double m=7.0; coutendlm; coutendlDOUBLE(m); coutendlm;} 输出结果为: 7.0 14.0 7.0 第五章 C++函数 二、数组参数 1、将整个数组作为形式参数,以数组名作 为实在参数。 ☆一维数组作为参数,可以不限定元素个数。 ☆多维数组作为参数,第一维可以不限定, 其余各维必须限定。 第五章 C++函数 例:(见P123,例5.5) #includeiostream.h int sum(int array[ ],int size) {int s=0; for(int i=0;isize;i++) s+=array[i]; return s;} void main( ) {int v1[ ]={1,2,3,4,5}; coutsum(v1,5)endl; int v2[ ]={1,2,3,4,5,6,7,8}; coutsum(v2,8)endl;} 输出结果为: 15 36 第五章 C++函数 2、若以数组作为参数,则对形参数组的改变就是 对实参数组的改变。 例(见P124) #includeiostream.h void sumAll(int data[ ][5],int result[ ],int rows) {for(int i=0;irows;++) {result[i]=0; for(int j=0;j5;j++) result[i]+=data[i][j]; } } void main( ) {int v[ ][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}}; int s[3]; sumAll(v,s,3); for(int i=0;i3;i++) couts[i]’ ’;} 程序输出为: 15 20 25 第五章 C++函数 三、可选参数 1、为形式参数表中的最后的若干个参数设 定默认值,则这些参数就称为可选参数。 2、可选参数的说明格式: 类型修饰符 参数名=默认值 如:int f(int a,c

文档评论(0)

1亿VIP精品文档

相关文档