计算机二级C++第三套第32题

题目如下:

 

 

 

 代码上机测试:

 1 #include <iostream>
 2 using namespace std;
 3 class Sample{
 4     friend long fun(Sample s);
 5 public:Sample(long a){ x = a; }
 6 private:long x;
 7 };
 8 long fun(Sample s){
 9     if (s.x < 2)return 1;
10     return s.x*fun(Sample(s.x - 1));
11 }
12 int main(){
13     int sum = 0;
14     for (int i = 0; i < 6; i++){
15         sum += fun(Sample(i));
16     }
17     cout << sum;
18     return 0;
19 }

测试结果:

 

 

 

分析总结:本题考查友元函数的应用。程序中函数fun是类Sample的一个友元函数,它可以直接访问类sample的所有成员。(友元函数可以直接访问所在的类中的所有成员

  题目当中,当i=0、1时,fun(Sample(i))=1;

  当i=2时,fun(Sample(i))=2*1;从2开始往下进入循环嵌套

  当i=3时,fun(Sample(i))=3*2*1=6;

  …………

  当i=5时,fun(Sample(i))=5*4*3*2*1=120;

  把这些数总和在一起是154

posted @ 2021-01-17 17:23  闫佳杰  阅读(149)  评论(0)    收藏  举报