网站大量收购独家精品文档,联系QQ:2885784924

作业━━第章━━函数的递归调用、重载、默认参数.docVIP

作业━━第章━━函数的递归调用、重载、默认参数.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作业━━第章━━函数的递归调用、重载、默认参数.doc

函数的递归调用、重载、默认参数 【学习要点】 1.掌握递归函数的调用及其执行过程。 2.掌握递归算法的一般设计方法,掌握简单递归算法的实现。 3.掌握重载函数的概念、定义和应用。 4.掌握带默认值形参的概念、定义和调用规则。 5.掌握内联函数的定义和实质。 6.掌握C++程序的多文件结构、及其编译和连接方法。 7.掌握编译预处理命令(文件包含、宏定义、条件编译)的概念和应用。 ------------------------------------------------------------------------------------------------------------------------------------------------- 【例题分析】 1.若有函数调用语句fun( a+b , (y=9, y*x) , fun( y,n,k ) ); 则其实参的个数是______A.B.C.D.______。 A. B. C. D. 【答案】A 【解析】内联函数是使用更多的存储空间,以减少执行的时间,即采用空间换取时间,以提高程序执行效率,当多次调用同一内联函数时,程序本身会增加所占用空间。除了函数体中含有循环语句、switch语句的函数不能定义为内联函数以外,其余均可定义为内联函数。内联函数的参数传递关系与一般的函数相同。 3.下面程序的运行结果是______。 # include iostream.h # define s(a) a*a void main() { int x=1, y=2, t ; t = s(x+y) ; cout t endl ; } 【答案】5 【解析】由于宏只是简单的字符替换,用实参x+y代替形参a,x+y)展开后的表达式为x+y*x+y,故程序运行结果是5。需提醒的是在进行宏定义时应注意圆括号的正确使用,# define s(a) (a)*(a) 后,则程序运行结果是。______。 int fc( int x , int y ) { return ( x+y ) ; } long fc( int x , int y ) { return ( x*y ) ; } 【答案】不是合法的重载函数 【解析】两个函数的参数类型、个数完全一样,仅是返回类型不同,不是合法的函数重载。 5.下面两个函数是否合法的重载函数______。 int val( int x , int y ) { return ( x*y ) ; } int val( int x , int y ) { return ( x+y ) ; } 【答案】不是合法的重载函数 【解析】引用类型变量的使用与普通变量的使用在形式上是一样的,这使得两个函数的参数类型、个数完全一样,故不是合法的函数重载。 6.下面两个函数是否合法的重载函数______。 int f( int x , int y ) { return ( x*y ) ; } int f( char x , char y ) { return ( x+y ) ; } 【答案】要具体问题具体分析,看看该程序中对应的调用式是否会造成二义性。 【解析】这个问题需具体分析。当C++调用一个函数时,需进行实参与形参的结合,这个结合过程要将调函数的实参表与每个重载函数的形参表进行比较,实参表和一个重载函数的形参表完全匹配,则调用该重载函数;没有找到严格的匹配函数,则C++编译器会试图通过类型转换找到一个匹配函数,编译器可能发现多个重载函数匹配,从而造成二义性。f( 2,2 )、f( a,b )是正确的,调用f( a,3 ),编译器无法确定将它转换为f( int , int )形式,还是f( char , char ) 形式,会造成二义性。 ______。 #include iostream.h void f( int ) ; void main() { f(3) ; } void f( int n ) { static int s = 5 ; int a = 5 ; if ( n!=0 ) { s++ ; a++ ; cout n ’\t’ s ’\t’ a endl ; f( n-1 ) ; } } 【答案】第1行输出:3 6 6 第2行输出:2 7 6 第3行输出:1 8 6 8.下面程序的运行结果是______。 #include iostream.h void fun( int ) ; void main( ) { int k = 5

文档评论(0)

000 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档