C程序设计三函数.pptx
上传人:骑着****猪猪 上传时间:2024-09-15 格式:PPTX 页数:65 大小:281KB 金币:20 举报 版权申诉
预览加载中,请您耐心等待几秒...

C程序设计三函数.pptx

C程序设计三函数.pptx

预览

免费试读已结束,剩余 55 页请下载文档后查看

20 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

会计学第八章函数8.1概述8.2函数定义和调用8.2.1函数的定义1.无参函数的一般形式2.有参函数的一般形式【例8.1】定义一个函数,用于求两个数的和。3.说明8.2.2函数的返回值与函数类型1.函数返回值与return语句2.函数类型8.2.3对被调用函数的说明和函数原型【例8.2】对被调用函数作声明8.2.4函数的调用在C语言中,可以用以下几种方式调用函数:(1)函数表达式。函数作为表达式的一项,出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数有返回值。如c=max(a,b)*20;(2)函数语句。C语言中的函数可以只进行某些操作而不返回函数值,这时的函数调用可作为一条独立的语句。如:Print();(3)函数实参。函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须有返回值。如:d=max(a,max(b,c));说明:(1)调用函数时,函数名称必须与具有该功能的自定义函数名称完全一致。(2)实参在类型上按顺序与形参,必须一一对应和匹配。如果类型不匹配,C编译程序将按赋值兼容的规则进行转换。如果实参和形参的类型不赋值兼容,通常并不给出出错信息,且程序仍然继续执行,只是有可能得不到正确的结果。(3)如果实参表中包括多个参数,对实参的求值顺序随系统而异。有的系统按自左向右顺序求实参的值,有的系统则相反。TurboC和MSC是按自右向左的顺序进行的。8.2.5函数的形参与实参【例8.3】定义一个函数max,实现求用户从终端输入的2个整型数中的较大者.说明:1:函数调用前形参不占用内存中的存储单元,只有在发生函数调用时形参才被分配内存单元,在调用结束后,形参所占内存单元被释放。因此,形参只有在该函数内有效。因此在执行一个被调用函数时,形参的值如果改变,并不会改变主调函数的实参的值。2.实参可以是常量、变量、表达式、函数等。无论是何种类型,在进行函数调用时,都必须具有确定的值,以便把这些值传送给形参。因此,应预先用赋值、输入等办法,使实参获得确定的值。3.实参对形参的数据传送是单向的“值传递”,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。【例8.4】函数参数的传递8.3函数的嵌套调用和递归调用8.3.1嵌套调用/【例8.5】计算s=1k+2k+3k+……+Nk(N=5,K=4)8.3.2递归调用举一个例子,有甲乙丙丁4人,甲比乙大3岁,乙比丙大3岁,丙比丁大3岁,若知道丁为20岁,问甲为多大?递归调用有两个过程递归过程,即自身不断调用自己,直至满足某种条件出现确定值,终止递归;递推过程,由后及前,逐步返回,直到得到最初的返回值,即为所求。【例8.6】有甲乙丙丁4人,甲比乙大3岁,乙比丙大3岁,丙比丁大3岁,若知道丁为20岁,问甲为多大?【例8.7】用递归的方法求n!1(n=0,1)n!=n*(n-1)!(n>1)【例8.8】用递归的方法求汉诺塔问题。voidhanoi(intn,charone,chartwo,charthree){voidmove(charx,chary);}voidmove(charx,chary){printf("%c-->%c\n",x,y);;}8.4数组作为函数参数【例8.9】有两个数组a,b,逐个比较数组中对应元素的大小。分别统计a数组中元素大于、小于、等于b数组中元素的次数large(intx,inty){intflag;if(x>y)flag=1;elseif(x==y)flag=0;elseflag=-1;return(flag);}【例8.10】写一函数,统计字符串中字母的个数。说明:(1)用数组元素作实参时,只要数组类型和函数的形参类型一致即可,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。(2)在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。在函数调用时发生的值传送,是把实参变量的值赋予形参变量。8.4.2数组名作为函数参数【例8.11】已知某个学生5门课程的成绩,求平均成绩。说明:(1)用数组名作函数参数,应该在调用函数和被调用函数中分别定义数组,且数据类型必须一致,否则结果将出错。(2)C编译系统对形参数组大小不作检查,只是将实参数组的地址传递给形参数组,所以形参数组可以不指定大小。如果指定形参数组的大小,则实参数组的大小必须大于等于形参数组,否则因形参数组的部分元素没有确定值而导致计算结果错误。(3)数组名作为函数参数时,传递的是数组地址,这样形参和实参就共用一个内存空间。也就是说形参数组中各元素的值发生变化也将使得实参数组的值发生变化。【例8.12】用选择