设为首页 加入收藏

TOP

3.2.2 填空题(1)
2013-10-07 16:20:28 来源: 作者: 【 】 浏览:78
Tags:3.2.2 填空

3.2.2  填空题(1)

【例3.6】以下程序的执行结果是      。
 

  1. #include <iostream.h> 
  2. class Sample  
  3. {   int n;  
  4. public:  
  5.     Sample() {}  
  6.     Sample(int i) { n=i; }  
  7.     void add(Sample &s1,Sample s2)  
  8.     {   this->n=s1.n+=s2.n;  }  
  9.     void disp() { cout << "n=" << n << endl; }  
  10. };  
  11. void main()  
  12. {   Sample s1(2),s2(5),s3;  
  13.     s3.add(s1,s2);  
  14.     s1.disp();  
  15.     s2.disp();  
  16.     s3.disp();  
  17. }  

解:在调用s3.add(s1,s2)时,s3通过this指针改变了s3.n的值,而add成员函数的第一个形参是引用,所以s1.n也发生了改变。程序运行结果如下:
 

  1. n=7 
  2. n=5 
  3. n=7 

【例3.7】以下程序的执行结果是      。

  1. #include <iostream.h> 
  2. class Sample  
  3. {   int n;  
  4. public:  
  5.     Sample() {}  
  6.     Sample(int i) { n=i; }  
  7.     void setn(int i) { n=i; }  
  8.     int getn() { return n; }  
  9.     void disp() { cout << "n=" << n << endl; }  
  10. };  
  11. Sample &add(Sample &s1,Sample s2)  
  12. {   s1.setn(s1.getn()+s2.getn());  
  13.     return s1;  
  14. }  
  15. void main()  
  16. {   Sample s1(2),s2(5),s3;  
  17.     s3=add(s1,s2);  
  18.     s1.disp();  
  19.     s2.disp();  
  20.     s3.disp();  
  21. }  

解:在执行s3=add(s1,s2)时,add函数的第一个形参是引用,所以s1.n发生了改变,s3通过add函数返回s1的引用而改变了s3.n的值。程序运行结果如下:
 

  1. n=7 
  2. n=5 
  3. n=7 

【例3.8】以下程序的执行结果是      。

  1. #include <iostream.h> 
  2. int f(int i)  
  3. {   return ++i;  }  
  4. int g(int &i)  
  5. {   return ++i;  }  
  6. void main()  
  7. {   int a,b;  
  8.     a=b=0;  
  9.     a+=f(g(a));  
  10.     b+=f(f(b));  
  11.     cout << "a=" << a << " b=" << b << endl;  
  12. }  

解:其中g()函数的参数是引用,f()函数的参数不是引用。执行a+=f(g(a))时,先执行f(g(a)),g(a)返回1,a=1,f(g(a))=f(1)=2,a=a+f(g(a))=1+2=3。执行b+=f(f(b))时,先执行f(f(b)),f(b)返回1,b=0,f(f(b))=f(1)=2,b=b+f(f(b))=0+2=2。本题答案为:a=3 b=2。

【例3.9】以下程序的执行结果是      。

  1. #include <iostream.h> 
  2. int &max(int &x,int &y)  
  3. {   return (x>y x:y);  }  
  4. void main()  
  5. {   int n=2,m=10;  
  6.     max(n,m)--;  
  7.     cout << "n=" << n << ",m=" << m << endl;  
  8. }  

解:该程序中,max()函数的两个参数均为引用型,返回的也是引用型,所以可以执行max(n,m)--,其功能是将n、m中的较大者减1。程序运行结果是:n=2,m=9。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.2.1 单项选择题 下一篇3.2.2 填空题(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 Python 进行数据 (2025-12-25 15:49:09)
·如何学习Python数据 (2025-12-25 15:49:07)
·利用Python进行数据 (2025-12-25 15:49:04)
·Java 学习线路图是怎 (2025-12-25 15:19:15)
·关于 Java 学习,有 (2025-12-25 15:19:12)