问答题

【参考答案】

//必须使用递归
jntfunl(intn)
{
if(n<=0)
return0;
if(n==1)
return1;
returnn*funl(n-1);
};
//不能使用递归
intfun2(intn)
{
if(n<=0)
retturn0;
intres=1:
for(inti=1;i<=n;i++)
{
res*=i;
}
returnres;
}
【解析】本题考查的是递归函数和阶乘算法。递归的阶乘算法可以通过判断传入参数,如果大于1,则返回n*funl(n-1),意思是返回n乘以n-1的阶乘;如果等于1,则返回1。这样递归下去就能最终得出n的阶乘。非递归算法可以先建立一个累乘变量,并初始化为1,然后循环遍历1~n,将遍历的数累乘到变量中即可。

(↓↓↓ 点击下方‘点击查看答案’看答案解析 ↓↓↓)

相关考题

问答题 (1)应添加“BA(intm){a=m;}”。 (2)应添加“PAl(intm,intn):BA(n){b=m;}”。 (3)应添力Ⅱ“PA2(intm,intn,intk):PAl(n,k){C=m;)”。 (4)应添加“cout<<geta()<<""<<getb()<<""<<C<<endl;”。 【解析】根据第1处要求,构造函数的函数名和类名一致,显然BA构造函数的名称为BA,在BA()中通过参数m完成对成员变量a的赋值,因此构造函数的名称为BA(intm),在函数内部对成员a赋值,故第1处的语句应添加“BA(intm){a=m;)”。根据第2处的要求,构造函数的形式为“PAl(intm,intn)”,m赋值给PA1类成员b,将n作为基类BA构造函数的参数值传入,故第2处应添加“PA1(intm,intn):BA(n){b=m;}”。根据第3处的要求,函数形式为PA2(intm,intn,intk),在构造函数中将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参数m和n,因此第3处应添加“PA2(intm,intn,intk):PA1(n,k){C=m;}”。根据第4处的要求,PA2类公有派生于PA1,而PA1公有派生于BA,因此在PA2类中可以调用基类的geta()和getb()来获得基类私有成员a和b,再输出PA2的私有成员C即满足要求,因此第4处应添加“cout<<geta()<<""<<getb()<<""<<C<<endl;”。

判断题 结合水是液态水的一种,故能传递静水压力。( )

问答题 使用VC++6.0打开考生文件夹下的源程序文件3.cpp。请完成以下部分,实现在屏幕上输出为 C3 C2 这个程序需要修改的部分,请按照以下部分实现。 (1)类C0不能被实例化,请定义一个纯虚函数print,在注释1后添加适当的语句。 (2)类C1私有虚继承类C0,请在注释2后添加适当的语句。 (3)类C2公有继承于C0,请在注释3后添加适当的语句。 (4)类c3公有继承于C2与C1,请在注释4后添加适当的语句。 注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 试题程序: #include(iostream.h) classCO { //********1******** }; //********2******** classC1: { public: voidprint() { cout<"”C1"<<endl; } }; //********3******** classC2: { public: voidprint() { cout<<"C2"<<endl; } }; //********4***x**** classC3: { public: voidprint() { cout<<"C3"<<endl; } }; voidmain() { C30bj3; C20bj2; obj3.print(); obj2.print(); return; }