首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #include <iostream> using namespace std; class Sample { friend long fun(Sample s); public: Sampl
有如下程序: #include <iostream> using namespace std; class Sample { friend long fun(Sample s); public: Sampl
admin
2017-10-17
37
问题
有如下程序: #include <iostream> using namespace std; class Sample { friend long fun(Sample s); public: Sample(long a) {x=a;} private: long x; }; long fun(Sample s) { if(s.x < 2) return 1; return s.x * fun(Sample(s.x-1)); } int main() { int stun = 0; for (int i=0; i<6; i++) {sum += fun(Sample(i));} cout << sum; return 0; }运行时输出的结果是
选项
A、120
B、16
C、154
D、34
答案
C
解析
本题考查的知识点是:友元函数、递归函数。友元函数不是当前类的成员函数,而是独立于当前类的外部函数,但它可以访问该类的所有对象的成员,包括私有成员、保护成员和公有成员。本题中的fun函数就被声明为Sample类的友元函数了。因此,在fun函数中可以直接访问Sample类对象的私有成员x。主函数中通过一个for循环依次以临时构造的Sample类对象为参数,调用fun函数,构造参数依次为0~5。如果一个函数在其函数体内直接或间接地调用了自己,该函数就称为递归函数。本题中的fun()函数直接调用了自身,所以它又是递归函数,不难分析其递归性质如下:
因为Sample类的构造函数只是简单的将构造参数a赋给成员x,故可省略不看。通过上述递归定义不难看出,n取0~5时,fun(n)的值依次为:1,1,2,6,24,120。累加之后结果为154,故本题应该选择C。
转载请注明原文地址:https://kaotiyun.com/show/HPAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
以下程序的执行结果是______.#include
以下定义数组中错误的是()
下列字符串常量表示中,()是错误的。
若要想进行标准输入输出则头文件必须包含______件。
已知类Sample中的一个成员函数说明如下:voidSet(Sample&a);其中,Sample&a的含意是()。
已知类A有公用数据成员a,且有A obj2;A * const ptr=new A;则下列语句正确的是
当需要将一个函数boo1isnumber(charc)声明为内联函数时,则此内联函数的函数原型为()。
下列语句段将输出字符’*’的个数为inti=100;while(1)i--;if(i==0)break;cout<<’*’;}
有如下定义:classMA{intvalue;public:MA(intn=0):value(n){}};MA*ta,tb;其中MA类的对象名标识符是______
随机试题
“黄粱一梦”出自()
NewAnnotatedSherlockHolmesbyArthurConanDoylePrice:£28.00PublicationDate:30/11/2009Publisher’sdescrip
A.1000-2000mlB.3000-5000mlC.不少于2000mlD.不少于6000mlE.不少于7000ml大肠癌术前全肠道灌洗液量()
根据《中华人民共和国广告法》,可做广告的药品是
银行存款余额调节表,银行对账单应当保存()
关于投资性房地产转换日的确定,下列说法中正确的有()。
如图,正方体的底面与正四面体的底面在同一平面α上,且AB∥CD,正方体的六个面所在的平面与直线CE、EF相交的平面个数分别记为m、n,那么m+n=().
[*]
若数列(a1+a2)+(a3+a4)+…+(a2n-1+a2n)+…发散,则级数an___________。
设A是n阶矩阵,P是n阶可逆矩阵,n维列向量α是矩阵A的属于特征值λ的特征向量,那么在下列矩阵中①A2;②P-1AP;③AT;④。α肯定是其特征向量的矩阵个数为()
最新回复
(
0
)