版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C C 程序设计程序设计 我们知道,一元二次方程有求根公式,我们知道,一元二次方程有求根公式,一般的一元三次方程、一元四次方程等高一般的一元三次方程、一元四次方程等高次方程是否也有类似的求根公式呢?次方程是否也有类似的求根公式呢? 8.5 8.5函数的嵌套调用函数的嵌套调用 引入引入问题问题 十六世纪中叶,一元三次方程和一元十六世纪中叶,一元三次方程和一元四次方程求根公式分别被意大利数学家卡四次方程求根公式分别被意大利数学家卡尔达诺和他的学生弗拉利获得尔达诺和他的学生弗拉利获得(2)(2)(1)(1) 函数名(实参表列函数名(实参表列););例如例如 8.5 8.5函数的嵌套调用函数的嵌套调用
2、 (3) (3) 如果使用用户自己定义的函数,而该函如果使用用户自己定义的函数,而该函数的位置在调用它的函数(即主调函数)的数的位置在调用它的函数(即主调函数)的后面(在同一个文件中后面(在同一个文件中),),应该在主调函数中应该在主调函数中对被调用的函数作对被调用的函数作声明声明(2) (2) 如果使用库函数,还应该在本文件开头如果使用库函数,还应该在本文件开头用用# include# include命令将调用有关库函数时所需命令将调用有关库函数时所需用到的信息用到的信息“包含包含”到本文件中来到本文件中来1 1、函数语句:把函数调用作为一个语句、函数语句:把函数调用作为一个语句scanf(
3、“%d”,&ai);scanf(“%d”,&ai);8.5.2 8.5.2 函数调用的三种方式函数调用的三种方式 例如例如 按函数在程序中出现的位置来分,按函数在程序中出现的位置来分,可以有以下三种函数调用方式可以有以下三种函数调用方式 这时不要求函数带回值,只要求函这时不要求函数带回值,只要求函数完成一定的操作数完成一定的操作 例如例如 2 2、函数表达式:函数出现在一个表达式中、函数表达式:函数出现在一个表达式中c=2c=2* *max(a,b);max(a,b); 这时要求函数带回一个确定的值以参加这时要求函数带回一个确定的值以参加表达式的运算表达式的运算, ,函数函数m
4、axmax是表达式的一部分是表达式的一部分、函数参数:函数调用作为一个函数的实参、函数参数:函数调用作为一个函数的实参 例如例如 m=max(a,max(b,c);m=max(a,max(b,c); 在一个函数中调用另一函数(即被调在一个函数中调用另一函数(即被调用函数)需要具备哪些条件呢用函数)需要具备哪些条件呢?8.5.3 8.5.3 对被调用函数的声明对被调用函数的声明(1) (1) 被调用的函数必须是已经存在的函数被调用的函数必须是已经存在的函数 (是库函数或用户自己定义的函数(是库函数或用户自己定义的函数) )直到十九世纪,挪威数学家阿贝尔证明了一般直到十九世纪,挪威数学家阿贝尔证明
5、了一般的五次及五次以上的方程都的五次及五次以上的方程都不可能有公式解法不可能有公式解法 此后三百多年的时间里,推求五次及其以此后三百多年的时间里,推求五次及其以上高次方程解法的人不可胜数,但都无果而终上高次方程解法的人不可胜数,但都无果而终法国数学奇才伽罗华,非常彻底地把全部代数法国数学奇才伽罗华,非常彻底地把全部代数方程可解性问题,转化或归结为置换群及其子方程可解性问题,转化或归结为置换群及其子群结构分析的问题,将这一问题彻底解决群结构分析的问题,将这一问题彻底解决 “ “声明声明”一词的原文是一词的原文是declerationdecleration,声明的作用是把函数名、函数参数的个数和声
6、明的作用是把函数名、函数参数的个数和参数类型等信息通知编译系统,以便在遇到参数类型等信息通知编译系统,以便在遇到函数调用时,编译系统能正确识别函数并检函数调用时,编译系统能正确识别函数并检查调用是否合法查调用是否合法. .(例如函数名是否正确,(例如函数名是否正确,实参与形参的类型和个数是否一致)实参与形参的类型和个数是否一致) 函数的定义是指对函数功能的确立,包函数的定义是指对函数功能的确立,包括指定函数名,函数值类型、形参及其类型、括指定函数名,函数值类型、形参及其类型、函数体等,它是一个完整的、独立的函数单函数体等,它是一个完整的、独立的函数单位。已经定义的函数,编译系统会为它分配位。已
7、经定义的函数,编译系统会为它分配相应的存储区域,可以说,定义的过程就是相应的存储区域,可以说,定义的过程就是子函数生成的过程子函数生成的过程函数的函数的“定义定义”和和“声明声明”不是一回不是一回事事(1) (1) 函数类型函数类型 函数名函数名( (参数类型参数类型1 1,参数类,参数类 型型2 2) );函数原型的一般形式为函数原型的一般形式为(2) (2) 函数类型函数类型 函数名函数名( (参数类型参数类型1 1,参数名,参数名1 1,参数类型参数类型2 2,参数名,参数名2 2) ); 做这样的函数原型声明,编译系统会按做这样的函数原型声明,编译系统会按照声明的形式做匹配检查,当和原
8、型不匹配照声明的形式做匹配检查,当和原型不匹配会导致编译出错,按语法出错提示会导致编译出错,按语法出错提示 如果被调用函数的定义出现在主调函数如果被调用函数的定义出现在主调函数之前,可以不必加以声明。因为编译系统已之前,可以不必加以声明。因为编译系统已经先知道了已定义函数的有关情况,会根据经先知道了已定义函数的有关情况,会根据函数首部提供的信息对函数的调用作正确性函数首部提供的信息对函数的调用作正确性检查检查 思考一下,如果被调函数出现在主调函思考一下,如果被调函数出现在主调函数之前,需要声明吗?数之前,需要声明吗? 数组名(实参表列数组名(实参表列);); 8.5.1 8.5.1函数调用的一
9、般形式函数调用的一般形式 例如例如 (2)(2)(1)(1) 1 1、函数语句:把函数调用作为一个语句、函数语句:把函数调用作为一个语句scanf(“%d”,&ai);scanf(“%d”,&ai);8.5.2 8.5.2 函数调用的三种方式函数调用的三种方式 例如例如 按函数在程序中出现的位置来分,按函数在程序中出现的位置来分,可以有以下三种函数调用方式可以有以下三种函数调用方式 这时不要求函数带回值,只要求函这时不要求函数带回值,只要求函数完成一定的操作数完成一定的操作 例如例如 2 2、函数表达式:函数出现在一个表达式中、函数表达式:函数出现在一个表达式中c=2c=2*
10、*max(a,b);max(a,b); 这时要求函数带回一个确定的值以参加这时要求函数带回一个确定的值以参加表达式的运算表达式的运算, ,函数函数maxmax是表达式的一部分是表达式的一部分、函数参数:函数调用作为一个函数的实参、函数参数:函数调用作为一个函数的实参 例如例如 m=max(a,max(b,c);m=max(a,max(b,c); 在一个函数中调用另一函数(即被调在一个函数中调用另一函数(即被调用函数)需要具备哪些条件呢用函数)需要具备哪些条件呢?8.5.3 8.5.3 对被调用函数的声明对被调用函数的声明(1) (1) 被调用的函数必须是已经存在的函数被调用的函数必须是已经存在
11、的函数 (是库函数或用户自己定义的函数(是库函数或用户自己定义的函数) )(3) (3) 如果使用用户自己定义的函数,而该函如果使用用户自己定义的函数,而该函数的位置在调用它的函数(即主调函数)的数的位置在调用它的函数(即主调函数)的后面(在同一个文件中后面(在同一个文件中),),应该在主调函数中应该在主调函数中对被调用的函数作对被调用的函数作声明声明(2) (2) 如果使用库函数,还应该在本文件开头如果使用库函数,还应该在本文件开头用用# include# include命令将调用有关库函数时所需命令将调用有关库函数时所需用到的信息用到的信息“包含包含”到本文件中来到本文件中来 “ “声明声
12、明”一词的原文是一词的原文是delarationdelaration,声,声明的作用是把函数名、函数参数的个数和参明的作用是把函数名、函数参数的个数和参数类型等信息通知编译系统,以便在遇到函数类型等信息通知编译系统,以便在遇到函数调用时,编译系统能正确识别函数并检查数调用时,编译系统能正确识别函数并检查调用是否合法调用是否合法. .(例如函数名是否正确,实(例如函数名是否正确,实参与形参的类型和个数是否一致)参与形参的类型和个数是否一致) 函数的定义是指对函数功能的确立,包函数的定义是指对函数功能的确立,包括指定函数名,函数值类型、形参及其类型、括指定函数名,函数值类型、形参及其类型、函数体等
13、,它是一个完整的、独立的函数单函数体等,它是一个完整的、独立的函数单位。已经的定义的函数,编译系统会为它分位。已经的定义的函数,编译系统会为它分配相应的存储区域,可以说,定义的过程就配相应的存储区域,可以说,定义的过程就是子函数生成的过程是子函数生成的过程函数的函数的“定义定义”和和“声明声明”不是一回不是一回事事(1) (1) 函数类型函数类型 函数名函数名( (参数类型参数类型1 1,参数类,参数类 型型2 2) );函数原型的一般形式为函数原型的一般形式为(2) (2) 函数类型函数类型 函数名函数名( (参数类型参数类型1 1,参数名,参数名1 1,参数类型参数类型2 2,参数名,参数
14、名2 2) ); 做这样的函数原型声明,编译系统会按做这样的函数原型声明,编译系统会按照声明的形式做匹配检查,当和原型不匹配照声明的形式做匹配检查,当和原型不匹配会导致编译出错,按语法出错提示会导致编译出错,按语法出错提示 如果被调用函数的定义出现在主调函数如果被调用函数的定义出现在主调函数之前,可以不必加以声明。因为编译系统已之前,可以不必加以声明。因为编译系统已经先知道了已定义函数的有关情况,会根据经先知道了已定义函数的有关情况,会根据函数首部提供的信息对函数的调用作正确性函数首部提供的信息对函数的调用作正确性检查检查 思考一下,如果被调函数出现在主调函思考一下,如果被调函数出现在主调函数
15、之前,需要声明吗?数之前,需要声明吗? 和一元高次方程对应的多项式函数属于和一元高次方程对应的多项式函数属于初等函数,而初等函数都是连续函数,根据初等函数,而初等函数都是连续函数,根据闭区间上连续函数的零点定理:闭区间上连续函数的零点定理:设函数设函数 在闭区间在闭区间a,ba,b上连续,且上连续,且 与与 异号,那么在开区间异号,那么在开区间(a,b)(a,b)上至少有上至少有一点一点 使得使得 )(xf)(af)(bf0)( f 8.5.4 8.5.4函数的嵌套调用函数的嵌套调用 根据上述定理知道,只要能找到某个根根据上述定理知道,只要能找到某个根所处的大概区间,找到一个合理的算法让这所处
16、的大概区间,找到一个合理的算法让这个区间缩小,根据区间套定理,就可以找见个区间缩小,根据区间套定理,就可以找见一点逼近这个方程根的近似值一点逼近这个方程根的近似值 根据前面的分析,通过演示我们共同可以根据前面的分析,通过演示我们共同可以得出算法,得出算法,82625xxxy以方程以方程)(,(11xfxxy1x0)(,(xfxxx)(,(xfxx)(,(xfx)(,(11xfx1x1x)(,(11xfx)(,(22xfx2x1x)(,(11xfxx)(,(xfx(1)(1)取两个不同点取两个不同点 , ,如果如果 和和符号相反符号相反, ,则则 区间内必有一个根。如区间内必有一个根。如果果 与
17、与 同符号同符号, ,则应改变则应改变 , ,直直到到 、 异号为止异号为止21,xx)(1xf)(2xf),(21xx)(1xf)(2xf21,xx)(1xf)(2xf(2)(2)连接连接 和和 两点两点, ,此线此线( (即弦即弦) )交交x x轴于轴于x x)(,(11xfx)(,(11xfx(3) (3) 若若 与与 同号同号, ,则根必在则根必在 区区间内间内, ,此时将此时将 作为新的作为新的 , ,如果如果 与与 同符号同符号, ,则表示根在则表示根在 区间内区间内, ,将将x x作为新作为新的的)(xf)(1xf)(xf),(2xxx1x)(2xf),(1xx2x(4) (4)
18、 重复步骤重复步骤(2)(2)和和(3),(3),直到直到 为止为止, , 为一个很小的数为一个很小的数, ,此时认为此时认为 , ,此时此时得到的得到的 就是所求的符合精度要求的近似根就是所求的符合精度要求的近似根 | )(|xf0| )(|xfxjx83525xxx(1)(1) 用函数用函数 代表代表 的函数的函数: :x)(xf(3)(3) 用函数调用用函数调用 来求来求 区间的区间的 那个实根。显然那个实根。显然, ,执行函数执行函数 过程中要用过程中要用到到函数到到函数 , ,而执行函数而执行函数 过过程中要用到到函数程中要用到到函数int()xpo),(21xxroot),(21x
19、x()rootint()xpo)(xf(2)(2) 用函数调用用函数调用 来求来求 和和 的连线与的连线与 轴的交点横坐标轴的交点横坐标),int(21xxxpo)(,(11xfx)(,(22xfxx float f(float x)float f(float x) / /* *定义函数定义函数, ,以实现以实现f(x)f(x)x3-5x2+16x-80 x3-5x2+16x-80* */ /float yfloat y; =(x=(x* *x-6)x-6)* *x x* *x-2)x-2)* *x-8;x-8; return(y);return(y);首先定义一个生成多项式的函数:首先定义一
20、个生成多项式的函数:# include # include # include # include float yfloat y; =(x1=(x1* *f(x2)-x2f(x2)-x2* *f(x1)/f(x2)-f(x1)f(x1)/f(x2)-f(x1); return(y);return(y); 其次,定义求弦与其次,定义求弦与x x轴交点横坐标函数轴交点横坐标函数float xpoint(float x1,x2)float xpoint(float x1,x2)/ /* *定义定义xpointxpoint函数函数, ,求出弦与求出弦与x x轴交点轴交点* */ /return(x)return(x) 再次,定义求根函数再次,定义求根函数float root(float x1,float x2)float root(float x1,float x2)float x,y,y1;float x,y,y1;y1=f(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度户外场地租用协议模板
- 文献检索考试题目之一
- 2024年物流配送服务协议汇编
- 2024年项目融资协议范本
- 2024届安徽池州市东至二中高中毕业班阶段性测试(二)数学试题
- 2024年度房地产经纪服务协议模板
- 2024专业储藏室转让协议格式
- 2024专业房产买卖协议法律认证文件
- 2024年会计人员劳务协议样本
- 城市便捷汽车租赁协议模板2024
- 农业灌溉装置市场环境与对策分析
- 统编版道德与法治初二上学期期中试卷及答案指导(2024年)
- 部编版小学五年级上册道法课程纲要(知识清单)
- 职业技能等级认定质量控制及规章制度
- 山东省临沂市(2024年-2025年小学四年级语文)人教版期中考试(上学期)试卷及答案
- 英大传媒投资集团限公司2024年应届毕业生招聘(第一批)高频500题难、易错点模拟试题附带答案详解
- 2024人教版道法七年级上册第二单元:成长的时空大单元整体教学设计
- 肺胀(慢性阻塞性肺病)中医优势病种诊疗方案
- 铁路交通安全主题班会课件
- 数学苏教版四年级(上册)1、解决问题的策略 苏教版(共13张)
- 2023-2024学年北京市某中学七年级上学期期中考试地理试卷(含详解)
评论
0/150
提交评论