第8章_函数概念.ppt

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 8.1 概述 说明: (1) 用数组名作函数参数,应在主调函数和被调函数分别定义数组。 (2) 实参数组与形参数组类型应一致,否则将出错。 (3)调用时进行地址传递,即将实参数组的首地址传 给形参数组,这样两个数组就共占同一段内存单元。 (4) 可不指定形参数组的大小,因为C编译对形参数组大小不做检查。但在数组名后跟一个空的方括弧,且可另设一个参数,传递数组元素的个数。 说明: 若在一个函数中改变了全局变量的值,就影响 其他函数,相当于各个函数间有直接的传递通道。 因此,可利用全局变量从函数得到多个返回值。 为区别全局变量和局部变量,将全局变量名的 笫一个字母用大写表示。    1. 取两个不同点x1,x2,如果f(x1)和f(x2)符号相反,则(x1,x2)区间内必有一个根。如果f(x1)与f(x2)同符号, 则应改变x1,x2,直到f(x1)、f(x2)异号为止。 2. 连接(x1,f(x1))和(x2,f(x2))两点,此线交x轴于x。 方法: 3.若f(x)与f(x1)同符号,则根必在(x,x2)区间内,此时将x作为新的x1。如果f(x)与f(x2)同符号,则表示根在(x1,x)区间内,将x作为新的x2。 4. 重复步骤 (2)和(3) , 直到|f(x)|<ε为止。 N-S流程图 实现各部分功能的几个函数: 1. 用函数f(x)代表x的函数:x3-5x2+16x-80。 2. 用函数调用xpoint (x1,x2)求(x1,f(x1))和(x2,f(x2))的连线与x轴的交点x的坐标。 3. 用函数调用root(x1,x2)求(x1,x2)区间的实根。 执行root函数过程中要用到函数xpoint,而执行 xpoint函数过程中要用到f函数。 #include stdio.h #include math.h float f ( float x ) /* 定义f函数*/ { float y; y=((x-5.0)*x+16.0)*x-80.0; return(y); } /*定义xpoint函数,求出弦与x轴交点 */ float xpoint ( float x1,float x2 ) { float y; y=(x1*f(x2)-x2*f(x1))/f(x2)-f(x1)); return (y); } float root(float x1,float x2) /* 定义root函数,求近似根 */ {float x,y,y1; y1=f(x1); do { x=xpoint(x1,x2); y=f(x);  if(y*y10) /*f(x)与f(x1)同符号 */   { y1 = y;   x1 = x;} else x2=x; } while(fabs(y)=0.0001); return(x) } void main() /*主函数 */ {float x1,x2,f1,f2,x; do {printf(“input x1 , x2: \n"); scanf(“%f,%f",&x1,&x2); f1 =f(x1); f2 =f(x2); }while(f1*f2=0); x = root(x1,x2); printf("A root of equation is %8.4f \n",x); } 运行情况如下: input x1,x2: 2,6 A root of equation is 5.0000 8.6 函数的递归调用 调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。 例如: int f ( int x) { int y; y=f(x-1)+2; return(y); } 例 8.7: 有5个人坐在一起,问第5个人多少岁? 他说比第4个人大2岁。问第4个人岁数,他说 比第3个人大2岁。问第3个人,又说比第2个人 大2岁。问第2个人,说比第1个人大2岁。最后 问第1个人,他说是10岁。请问第5个人多大? age(

文档评论(0)

5201394 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档