计算机二级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
宜将剩勇追穷寇,不可沽名学霸王。