- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
形参1 [ ,··· ] )
2013-8-3
Page
6
Program Design in C Language
7.1.2 函数的分类与定义
函数定义的一般形式举例:
(1) float sum ( x , y ) float x , y ; { int z ; z=x+y; return z ; (2) float sum (float x, float y ) { int z ; z=x+y; return z ; }
Program Design in C Language
折半查找法
有15个数按由小到大的顺序存放在一个数组中,输入一个数,要 求用折半查找法找出该数是数组中第几个元素的值。如果该数不 在数组中,则打印出“无此数”。 分析:从表列中查一个数最简单的方法是从第1个数开始顺序 查找,将要找的数与表列中的数一一比较,直到找到为止(如果 表列中无此数,则应找到最后一个数,然后判定“找不到”)。 但这种“顺序查找法”效率较底。如果表列中有1000个数,且要 找的数恰恰是第1000个数,则要进行1000次比较才能得到结果。 平均比较次数为500次。 折半查找法是效率较高的一种方法。基本思路如下:
2013-8-3
Page 10
Program Design in C Language
7.1.2 函数的分类与定义 float sum ( x , y ) float x , y ; { int z ; z = x + y ; return z ; } 函数体:
函数中最外层一对花括 弧"{ ··· ·· }"括起来的内容, ·· 它由若干个数据说明语句和 可执行语句组成,决定函数 要实现的功能、完成的任务。 函数体内若无任何语句时, 为空函数。
• 结构化程序设计方法:
• 自顶向下,逐步细化;
• 模块化设计;
• 结构化编码。
• 特点:
程序结构清晰,易于维护,增加了函数的 可重用性和可扩充性。
2013-8-3
Page
4
Program Design in C Language
7.1.2 函数的分类与定义
1.函数的分类
从用户的观点分为:C编译系统提供的标准库 函数和用户自定义函数; 从函数间数据传送的关系分为:有参函数、无 参函数、有返回值函数、无返回值函数; 从函数的调用分为:内部函数和外部函数。
程序:float jiechen( int n ) { float x, y ; for ( x=y=1.0; x<=n; x++ ) y *= x ; return y ; }
2013-8-3
Page 13
Program Design in C Language
7.1.3 函数调用的一般形式 函数调用的一般形式是: 函数名(实参表列)
{· · ·
}
float ftoc( float temp )
{· · ·
2013-8-3
}
Page 21
Program Design in C Language
7.1.4 函数的参数 例 形参和实参的运用
try( int x, int y, int z ) { printf( "2) x=%d, y=%d, z=%d\n", x, y, z); z=x+y; x=x*x; y=y*y; printf( "3) x=%d, y=%d, z=%d\n", x, y, z); } main( ) { int a=2, b =3, c=4 ; printf( "1) a=%d, b=%d, c=%d\n", a, b, c ); try( a, b, c ) ; printf( "4) a=%d, b=%d, c=%d\n", a, b, c ); }
2013-8-3
Page 15
Program Design in C Language
7.1.3 函数调用的一般形式 例 调用自定义函数求 n!
调用: 自定义函数: float jiechen( int n ) void main( ) { int n; { float x, y ; for( x=y=1.0; x<=n; x++) float f ; printf(“Please input n:”); y *= x ; scanf(“%d”,&n); return y ; f=jiechen (n); } printf(“n!=%f”,f); }
2013-8-3
Page
2
Program Design in C Language
第七章 函数
第十讲
C程序的模块化结构 函数的分类与定义 函数调用的一般形式
函数的参数
函数的返回值 数组作为函数参数
2013-8-3
Page
3
Program Design in C Language
7.1.1 C程序的模块化结构 C程序的模块化结构
2013-8-3
程序运行结果: r=21
Page 19
Program Design in C Language
7.1.4 函数的参数 形参与实参
实参(实际参数)是函数调用时调用函数传送 给被调用函数参数的实际值。实参可以是常量、 变量和表达式,实参必须有确定的值。
例如: fabs( -2 );
putchar( c );
2013-8-3
Page 22
Program Design in C Language
7.1.4 函数的参数 说明:
1000H 1002H 1004H
实参 a ,b ,c 传 递
2013-8-3
Page 17
Program Design in C Language
7.1.3 函数调用的一般形式
例:说出下列程序的运行结果
fun2( int a, int b ) { int c ; c=a*b%3 ; return c ; } fun1( int a, int b ) { int c ; a+=a ; b+=b ; c = fun2( a, b ) ; return c*c ; } main ( ) { int x=11, y=19 ; printf("%d\n", fun1( x, y) ); }
2013-8-3
程序运行结果:
4
Page 18
Program Design in C Language
7.1.3 函数调用的一般形式
例:说出下列程序的运行结果
#include <stdio.h> func(int a, int b) {int c; c=a+b; return c; } main( ) {int x=6, y=7, z=8, r ; r=func((x--,y++,x+y), z-- ); printf(“r=%d\n”,r); }
}
2013-8-3
Page
7
Program Design in C Language
7.1.2 函数的分类与定义
函数定义的一般形式说明:
(1) float sum ( x , y ) float x , y ; { int z ; z=x+y; return z ; }
2013-8-3
类型说明符: 指明函数的类型,函数的 类型是指函数的返回值的类 型,函数返回值所具有的数 据类型的种类与变量相同。 省略时则默认为int型。若明 确表示函数 "不带回值",可 以用 " void " 作类型符,称" 无类型"或称"空类型"。
•说明:
– 实参与形参的个数相等、类型相同、顺序一致, 呈一一对应的关系。
– 实参的求值顺序不确定,与所用系统有关。
– 实参应有确定的值。
2013-8-3
Page 14
Program Design in C Language
7.1.3 函数调用的一般形式 函数调用时,需要注意的几点:
C语言参数传递时,一般采用传值方式,把各个实参值分别 顺序对应传给形参。被调函数执行中形参值的变化不会影响主 调函数中实参变量的值。 数组名作为参数传送时不同,是“传址”,会对主调函数中 的数组元素产生影响。 注意采用函数原型对被调函数参数类型的一致。如不作说明 ,可能会引起参数传送出错。 函数调用也是一种表达式,其值就是函数的返回值。
sqrt((x*x+2)*(y+z));
2013-8-3
Page 20
Program Design in C Language
7.1.4 函数的参数 形参(形式参数)是函数定义时,参数表中的 参数。形式参数只能是变量。在函数定义时,参 数表中的形参并没有具体的值,系统也不为其分 配存储单元。
例如:max( float x, float y )
z=x+y; return z ;
}
2013-8-3
Page
9
Program Design in C Language
7.1.2 函数的分类与定义
float sum ( float x , float y ) 参数表( 形参表 ): 函数定义时的参数称为 { …… 形式参数,形式参数彼 } 此间用逗号分隔。 float sum ( x , y ) 形式参数省略时称无参 float x , y ; 函数 ,但此时函数名后 { int z ; 的圆括号不能省。 z=x+y ; 形参说明是用来指明各 return z ; 个形式参数的类型 ,它 } 随形参的存在而存在。