[例85] float add( float x, float y)*声明自己写的ad函数的原型 main o d float add(floats, floaty ) float a, b, Ci 在文件的开头声明函数原型。 scanf( %/of, %of &a, &b); C= add(a,bi 在main的开头声明函数原型。 printf("sum is %of ,c) } float add( float x, float y)/*定义add函数*/ d float zi z=X+ VH return zi不需要函数声明的情况 1、返回值为整型的函数。 2、被调用函数的定义出现在主调用函数之前。 3、在所有函数定义之前,文件的开头,已经作 了函数声明
[例8.5] float add(float x, float y); /* 声明自己写的add函数的原型 */ main () { float a,b,c; scanf("%f,%f",&a,&b); c = add(a,b); printf("sum is %f",c); } float add(float x, float y) /*定义add函数 */ { float z; z = x + y; return z; } 在文件的开头声明函数原型。 float add(float x, float y ); 在main的开头声明函数原型。 不需要函数声明的情况 1、返回值为整型的函数。 2、被调用函数的定义出现在主调用函数之前。 3、在所有函数定义之前,文件的开头,已经作 了函数声明
§85函数的嵌套调用 函数的嵌套调用:在一个函数的函数体内调 用另一个函数。 Xo print) y( scanf( getchar() maX
§8.5 函数的嵌套调用 函数的嵌套调用:在一个函数的函数体内调 用另一个函数。 scanf( ) x( ) printf( ) y( ) getchar( ) max( )
在函数的嵌套调用中,函数的执行采取后调用先返回的原则。 即最内层的函数调用最先返回函数值,由内到外依次返回。 main() a() bo 调用a()调用b() END 调用一个函数过程中又调用了另一个函数
main( ) a( ) b( ) 调用a( ) 调用b( ) END 调用一个函数过程中又调用了另一个函数 在函数的嵌套调用中,函数的执行采取后调用先返回的原则。 即最内层的函数调用最先返回函数值,由内到外依次返回
求解x35x2+16x-80=0的根 beeb ebe 解题步骤: 1.取两个不同点x1,x2 如果fx1)和fx2)符号相反, 则区x1,x2区间必有一个根, 如果同号,则应改变x1和 x2,直至异号为止 X 2连接(x1)和f(x2),交x轴于 x点,则 X X=[x1*f(x2)-x2*f(x1)/f(x2)-f(x1) X 3.求fx) 4若f(x)与x1)同号,则(x,x2)有根,此时将x作为x1 若f(x)与f(x2)同号,则(x,x1)有根,此时将x作为x2 5重复2~4的步骤,直至f(x)某个值,视精度要求而定
求解x 3 -5x2+16x-80=0的根 解题步骤: 1. 取两个不同点x1,x2 如果f(x1)和f(x2)符号相反, 则[x1,x2]区间必有一个根, 如果同号,则应改变x1和 x2,直至异号为止 2. 连接f(x1)和f(x2),交x轴于 x点,则 x=[x1*f(x2)-x2*f(x1)]/[f(x2)-f(x1)] 3. 求f(x) 4. 若f(x)与f(x1)同号,则(x,x2)有根,此时将x作为x1 若f(x)与f(x2)同号,则(x,x1)有根,此时将x作为x2 5. 重复2~4的步骤,直至f(x)<某个值,视精度要求而定 x1 f(x1) x x2 f(x2) f(x)
例86.c*米***函数的调用*米**米*米**** +t include <math. h> float: root(x1, x2) float: x1: x2: nt: i, float: x, y, y1 y1=f(x1) do X=xpoint (Xl, X 2) y=f(x) f(y*y1>0) float xpoint(x1, x2) float x1 x2 y⊥=y float y x1=x; y=(XIf(x 2)-x2*f(x1) /(f(x2)-f(x1) e⊥se return (y) x2=X fwhile (fabs(y)>=0. 0001) return (x)
***例8_6.c ******** 函数的调用 ******************** # include <math.h> float root(x1,x2) float x1,x2; { int i; float x,y,y1; y1=f(x1); do { x=xpoint(x1,x2); y=f(x); if (y*y1>0) { y1=y; x1=x; } else x2=x; }while (fabs(y)>=0.0001); return (x); } float xpoint(x1,x2) float x1,x2; { float y; y=(x1*f(x2)-x2*f(x1)) /(f(x2)-f(x1)); return (y); }