- 1、本文档共80页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++程序由函数构成。 函数:一个独立完成某个功能的语句块,函数与函数之间通过(输入)参数和返回值(输出)来联系。 执行流程:从main( )函数开始,顺序执行。遇函数调用语句,转入被调函数,执行完毕,返回主调函数。 从用户角度来看 系统库函数 (如:sqrt( )、fabs( ) )标准函数 函数 自定义函数 (如:printstar( )、maxx( )) 从函数的形式来看 无参函数 ( 如:printstar( ) ) 函数 有参函数 ( 如:maxx(x, y) ) 无参函数的定义 有参函数的定义 形参:即形式参数 定义时函数名后面的变量名 实参:即实际参数 调用函数时函数名后面括号中的表达式 一般来说,形参和实参个数、类型应一致。 形参、实参占用不同的内存单元。 格式:return 表达式 ; 或 return (表达式); 定义函数f(x)来求x的函数:f(x)=x4+4x3-3x2+5x+6的函数值; 定义函数xpoint(x1, x2)来求点(x1, f(x1))和点(x2, f(x2))的连线与X轴的交点x的坐标值; 定义函数root(x1, x2)来求(x1, x2)区间的实根。 显然执行root函数过程中要用到函数f(x),xpint(x1,x2) 可把要解决的问题转化为一个新的问题,而这新的问题的解法仍与原来的解法相同,只是所处理的对象有规律地递增或递减。例:n!=n*(n-1)! 可应用这个转化过程使问题得到解决。 必定要有一个明确的结束递归的条件。例:n==0||n==1时,阶乘的值为1 问题:有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2个人大2岁。问第2个人,说比第1个人大2岁。最后问第1个人,他说是10岁。请问第5 个人多大? 求n!可以用递推方法,即从1开始,乘2,再乘3……一直乘到n; 求n!也可以用递归的方法,即5!=4! ×5,而4!=3! ×4,…,1!=1。可用以下递归公式表示 注意: 能用非递归方法解决且不是很复杂的问题最好不用递归方法解决。 原因:在函数的递归调用过程中,系统要为每一层调用中的变量开辟存储单元,要记住每一层调用后的返回点,要增加许多额外的开销,因此函数的递归调用通常会降低程序的运行效率。 #include iostream.h int abs(int x) //求整数的绝对值 { if(x0) return(-x); else return(x); } float abs(float x) //求float型数据的绝对值 { return( x0 ? x : -x ); } double abs(double x) //求double型数据的绝对值 { return( x0 ? x : -x ); } #include iostream.h int max(int a,int b); int max(int a,int b,int c); void main( ) { coutmax(5,8)endl; coutmax(10,4,20) endl; } 在C++语言中,由用户命名的标识符都有一个有效的作用域。(标识符:如变量名、函数名) 作用域:即作用范围,指所定义的标识符在哪一个区间内有效,可以被 C++ 编译和连接程序所识别。 例如在函数 sub( )内定义的变量,不能在其他函数中引用;变量的作用域与其在程序中出现的部位有关。 作用域的类型: 块作用域(局部变量) 文件作用域(全局变量或称外部变量) 函数原型作用域 函数作用域 类作用域 块作用域: 块:用花括号括起来的一部分称为一个块。 块作用域:在块内定义的标识符,其有效范围在块内。 局部变量:在块内定义的变量或在一个函数内部定义的变量。 float f1(int a) //函数f1 { int b, c; . . . } char f2(int x, int y) //函数f2 { int b, c; int i, j; . . . } void main( ) //主函数 { int m, n; . . . } #include iostream.h void main( ) { int a, b; cin a b ; if(ab) { int t; t=a;
文档评论(0)