定义与声明不同 “定义”是指对函数功能的确立 “声明”的作用是将被调用函数的信 息告之编译系统 函数声明 float add (float x, float y float add( float,foat;/原型* float add() /不提倡*
• 定义与声明不同 • “定义”是指对函数功能的确立 • “声明”的作用是将被调用函数的信 息告之编译系统 • 函数声明 float add(float x,float y); float add(float, float); /*原型*/ float add( ); /*不提倡*/
函数原型的一般形式 1.函数类型函数名(参数类型1, 参数类型2. 2.函数类型函数名(参数类型1,参数名1, 参数类型2,参数名2. ·对被调函数不用进行说明的两种情况 1.被调函数的定义出现在主调函数之前 2.被调函数为整型或字符型 位置:在文件的开头或在调用函数之前
• 函数原型的一般形式 1. 函数类型 函数名(参数类型1, 参数类型2……) 2. 函数类型 函数名(参数类型1,参数名1, 参数类型2,参数名2……) • 对被调函数不用进行说明的两种情况: 1. 被调函数的定义出现在主调函数之前 2. 被调函数为整型或字符型 位置:在文件的开头或在调用函数之前
·被调函数在主调函数之前定义 float adde( float x, float y)/定义实型函数 float Z Z=X+y return(z)丹} main( 不用声明 float a.b.c scan(%6,%",&a,&b); c=add(a, b); printf("sum is %f",c);
• 被调函数在主调函数之前定义 float add(float x,float y) /* 定义实型函数*/ {float z; z=x+y; return(z);} main( ) { 不用声明 float a,b,c; scanf("%f,%f",&a,&b); c=add(a,b); printf("sum is %f",c); }
函数的嵌套调用 C语言允许函数嵌套调用,即函数甲调用 函数乙,而函数乙又调用了函数丙 例86用弦截法求方程的根 X3-5x2+16×-80=0 1.取两个不同点x1、x2 2.连接f(×1)与f(X2)交x轴于x X点坐标: 1f(x2)x2f(X1) f(×2)f(×1) 再从X求出f(x)
函数的嵌套调用 • C语言允许函数嵌套调用,即函数甲调用 函数乙,而函数乙又调用了函数丙 • 例8.6用弦截法求方程的根 X3 -5x2+16x-80=0 1. 取两个不同点x1、x2 2. 连接f(x1)与f(x2)交x轴于x x点坐标: x1 .f(x2 )-x2 .f(x1 ) f(x2 )-f(x1 ) 再从x求出f(x) x=
3.若f(×)与f(×1)同号,则根必在(X,x2)区间内, 此时x作为新的x1..将x作为x2 4.重复步骤23,直到x)k≤E为止(106) 此时认为fx)=0 输入x1,x2求f(x1),fX2) 直到fx1)和f(x2)异号 求f(x1)与fx2)连线与x轴的交点x )2y1=f(×1) 与y1同号 假 X10 X1=x X2=X 直到y|<E f(x1) root=x输出root 图86 图8.7
3. 若f(x)与f(x1)同号,则根必在(x,x2)区间内, 此时x作为新的x1……将x作为x2 4. 重复步骤2.3.,直到|f(x)|<ε为止(10-6 ) 此时认为f(x)≈0 x2 x X1 0 x f(x) f(x1) f(x2) y ε 输入x1,x2求f(x1),f(x2) 直到f(x1)和f(x2)异号 求f(x1)与f(x2)连线与x轴的交点x y=f(x),y1=f(x1) 真 y与y1同号 假 x1=x x2=x 直到|y|<ε root=x 输出root 图8.6 图8.7