预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共32页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

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

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

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

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

第12讲函数的定义及调用4、函数原型 5、数组作为函数的参数 三、函数的调用 1、函数调用的一般形式 2、函数嵌套调用 1、C程序的模块化结构格式一: [类型符]函数名称([形参表]) [形参说明] {数据说明部分 可执行语句} 格式二: [类型符]函数名称(类型形参1[,···]) {数据说明部分 可执行语句}函数定义的一般形式举例:函数定义的一般形式说明:floatsum(x,y) floatx,y; {intz; z=x+y;returnz; }floatsum(floatx,floaty) {…… } floatsum(x,y) floatx,y; {intz; z=x+y;returnz; }floatsum(x,y) floatx,y; {intz; z=x+y;returnz; }例编写自定义函数计算:例编写一个自定义函数求n!实参(实际参数)是函数调用时调用函数传送给被调用函数参数的实际值。实参可以是常量、变量和表达式,实参必须有确定的值。 例如:fabs(-2); putchar(c); sqrt((x*x+2)*(y+z));形参(形式参数)是函数定义时,参数表中的参数。形式参数只能是变量。在函数定义时,参数表中的形参并没有具体的值,系统也不为其分配存储单元。 例如:max(floatx,floaty) {···} floatftoc(floattemp) {···}例形参和实参的运用说明:函数的返回值:当被调用函数在完成一定的功能后,可以将处理的结果返回到调用函数。 方式:return语句 作用:将表达式的值传给调用函数,并把控制权转向调用函数实现函数的返回,即结束被调用函数的执行,并将控制返回到调用它的函数。 格式: return[[(]表达式[)]];对于不需要提供返回值的函数可以直接用void作为函数类型定义,以表明此函数返回值为”无类型”或”空类型”。 例:voidpsch(){printf("WuhanUniversity\n");} main() {psch();}函数原型:在定义或调用函数前,对该函数进行声明。 作用:将函数名、函数类型及形参个数、类型、顺序等通知编译系统,当函数被调用时,可对实参、形参的类型、个数匹配情况进行检查。 格式: 类型符函数名(参数类型1,···); 或: 类型符函数名(类型符形参1,···);例利用变量换数例判定素数。数组元素做函数实参,遵循”值传送”特性,此时形参为变量。 数组名可做实参和形参,传送的是整个数组。 在用数组名做函数参数时,实参和形参都应该用数组(或指针变量)。数组元素作为函数参数举例:szdy1(intx[10]); szdy2(intx[10]); main() {inta[10],b[4][5]; ··· szdy1(a); szdy2(b); ···}数组名作函数参数时应注意:数组名作函数的参数举例:例利用数组换数voidhuanshu2(intshuzu[],intn) {intt,i;printf("\n"); for(i=0;i<n;i++) printf("2)shuzu[%d]=%5d",i,shuzu[i]); for(i=0;i<n-1;i++) {t=shuzu[i];shuzu[i]=shuzu[i+1]; shuzu[i+1]=t;} printf("\n"); for(i=0;i<n;i++) printf("3)shuzu[%d]=%5d",i,shuzu[i]); }说明:参数传递小结:格式: 函数名([实参列表]); 说明: 实参与形参的个数相等、类型相同、顺序一致,呈一一对应的关系。 实参的求值顺序不确定,与所用系统有关。 实参应有确定的值。 方式 1)函数语句: 例printf(”·····”); 2)函数表达式: 例c=2*pow(3.5,6); 3)函数参数: 例c=2*pow(pow(3.5,6),6); 例printf(”%f\n”,pow(3.5,6));例:说出下列程序的功能