- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
函数的嵌套调用
我们知道,一元二次方程有求根公式,一般的一元三次方程、一元四次方程等高次方程是否也有类似的求根公式呢? 小 结 作 业 {float y; y=(x1*f(x2)-x2*f(x1)/f(x2)-f(x1); return(y); } 其次,定义求弦与x轴交点横坐标函数 float xpoint(float x1,x2) /*定义xpoint函数,求出弦与x轴交点*/ return(x)} 再次,定义求根函数 float root(float x1,float x2) {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); 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*f20); x=root(x1,x2); printf(“Aroot of the equation is %8.4f\n”,x);} 最后定义主函数,调用前面定义过的函数 函数调用的一般形式 函数嵌套调用举例 对被调用函数的声明 函数调用的三种方式 * C 程序设计 8.5函数的嵌套调用 引入 问题 十六世纪中叶,一元三次方程和一元四次方程求根公式分别被意大利数学家卡尔达诺和他的学生弗拉利获得 (2)如果实参表列包含多个实参,则各参数间用逗号隔开,实参与形参的个数应相等,类型应匹配,实参与形参按顺序对应,一一传递数据 (1)如果是调用无参函数,则“实参表列”可以没有,但括弧不能省略 2、说明 1、函数调用的一般形式为: 函数名(实参表列); 例如 max(int a,int b,int c); 该语句表明调用了一个函数名为max的函数,这个函数有三个实在参数 8.5函数的嵌套调用 (3) 如果使用用户自己定义的函数,而该函数的位置在调用它的函数(即主调函数)的后面(在同一个文件中),应该在主调函数中对被调用的函数作声明 (2) 如果使用库函数,还应该在本文件开头用# include命令将调用有关库函数时所需用到的信息“包含”到本文件中来 1、函数语句:把函数调用作为一个语句 scanf(“%d”,a[i]); 8.5.2 函数调用的三种方式 例如 按函数在程序中出现的位置来分,可以有以下三种函数调用方式 这时不要求函数带回值,只要求函数完成一定的操作 例如 2、函数表达式:函数出现在一个表达式中 c=2*max(a,b); 这时要求函数带回一个确定的值以参加表达式的运算,函数max是表达式的一部分 3、函数参数:函数调用作为一个函数的实参 例如 m=max(a,max(b,c)); 在一个函数中调用另一函数(即被调用函数)需要具备哪些条件呢? 8.5.3 对被调用函数的声明 (1) 被调用的函数必须是已经存在的函数 (是库函数或用户自己定义的函数) 直到十九世纪,挪威数学家阿贝尔证明了一般的五次及五次以上的方程都不可能有公式解法 此后三百多年的时间里,推求五次及其以上高次方程解法的人不可胜数,但都无果而终 法国数学奇才伽罗华,非常彻底地把全部代数方程可解性问题,转化或归结为置换群及其子群结构分析的问题,将这一问题彻底解决 “声明”一词的原文是decleration,声明的作用是把函数名、函数参数的个数和参数类型等信息通知编译系统,以便在遇到函数调用时,编译系统能正确识别函数并检查调用是否合法.(例如函数名是否正确,实参与形参的类型和个数是否一致) 函数的定义是指对函数功能的确立,包括指定函数名,函数值类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。已经定义的函数,编译系统会为它分配相应的存储区域,可以说,定义的过程就是子函数生成的过程 函数的“定义”和“声明”不是一回事 注意 (1) 函数类型 函数名(参数类型1,参数类 型2……); 函数原型的一般形式为 (2) 函数类型 函数名(参数类型1,参数名1,参数类型2,参数名2……); 做这样的函数原型声明,编译系统会按照声明的形式做匹配检查,当和原型不匹配会导
文档评论(0)