问答题

【参考答案】

使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列撮作,将类的定义补充完整。
(1)利用define定义常量TRUE为1,定义常量FALSE为0,请在注释1后添加适当的语句。
(2)在类A2前增加A1的声明,请在注释2后添加适当的语句。
(3)在类Cl中声明友元函数boolrune(A2&a,A1&b),请在注释3后添加适当的语句。
(4)实现函数boolfunc(A2&obj1,Al&obj2)的功能,检查两个类的值都为TRUE,则返回TRUE,请在注释4后添加适当的语句。
注意:除在指定位置添加语句之外,不要改动程序中的其他内容。
试题程序:
#include(iostream.h>
//********1********
#
defineFALSE0
//********2********
classA2
{
private:
boolm_A2;
friendboolfunc(A2&objl,A1&obj2);
public:
A2()
{
m_A2=FALSE。
}
public:
voidsetA2(booln)
{
m_A2=n;
}
};
elaSSA1
{
private:
boolm_A1;
//********3*********
public:
A1()
{
m_A1=TRUE;
}
public:
voidsetAl(booln)
{
m_A1=n;
}
};
boolfunc(A2&objl,A1&obj2)
{
//********4********
return
}
intmain()
{
A20bj0;
A10bj1;
cout<<fune(obj0,objl)<<endl;
obj0.setA2(TRUE);
objl.setAl(TRUE);
cout<<func(obj0,objl)<<endl;
return0;
}

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

相关考题

问答题 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错.请改正其中的错误,使程序正常运行,并使程序输出的结果为 Maxis7 提示:max函数用于找出两个数中的最大值,并作为函 数值返回。 注意:错误的语句在//******error******的下面,修改该语句即可。 试题程序: #include<iostream> usingnamespacestd; //******error****** intmax(inta,intb) { if(a<b) { intt=a; a=b: b=t; } returnb; } intmain() { intm=-3: intn=7: //******error****** max(-3,n); cout<<"Maxis"<<m<<endl; return0; }

问答题 使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成以下两个函数。 (1)funl(intn)求出n的阶乘,必须使用递归调用。 (2)fun2(intn)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。 注意:不能修改函数的其他部分。 试题程序: #include<iostream.h> //必须使用递归 intfunl(intn) { } //不能使用递归 intfun2(intn) { } voidmain() { inti; cout<<"请输入一个整数:"<<endl; cin>>i; cout<<"输入数字的阶乘是:"<<funl(i)<<endl; cout<<"输入数字的阶乘是:"<<fun2(i)<<endl; return; }

问答题 (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;”。