//33private:
//36
intm_iDerive;
//37
};//38
//39intmain()//40
{//41
CBaseobj(10);//42
();//43return0;
//44
}//45六、编程题(本大题共2个小题,每小题8分,共16分)
1.编写一个函数模板,用于求参数的绝对值,并编写测试程序进行测试。
函数模板声明如下:
template
TypeAbs(TypetVar)
2.定义一个复数类CComplex,定义带有2个参数(其中一个为缺省参数)的构造函数,显
示复数值的函数Show(),重载“+”运算符(用成员函数实现),并编写测试程序进行测试。
C++面向对象程序设计模拟试题一参考答案
、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项
无分。
二、判断正误题(本大题共
6小题,每小题2分,共12分)判断正误,在题后的括号内,
正确的划上“V”错误的划上“X”。
1参考答案:
“
2•参考答案:
X
3•参考答案:
X
4•参考答案:
X
5•参考答案:
“
6.参考答案:
“
三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在每小题的空格内。
错填或不填均无分。
1.参考答案:
new
2.参考答案:
class或typename
3•参考答案:
重载
4•参考答案:
对象
5•参考答案:
静态
6.参考答案:
operator*
四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。
1参考答案:
97215
2.参考答案:
5683.参考答案:
61822
4.参考答案:
0
0
1
6
18
五、程序改错题(本大题共4小题,每小题5分,共20分)指出下面程序中的错误,说明错误原因,并加以改正。
1.参考答案:
出错行:
第12行
原因:
析造函数不能有返回值类型
改正:
去掉void
2.参考答案:
出错行:
第7行原因:
带缺省值的参数应放在参数表的尾部,其后不允许出现不带缺省值的参数改正:
CTest(intiA=0,intiB=0):
m_iA(iA),m_iB(iB)
//7
或
CTest(intiA,intiB=0):
m_iA(iA),m_iB(iB)
//7
或
CTest(intiA,intiB):
m_iA(iA),m_iB(iB)
3.参考答案:
出错行:
第9行原因:
常数据成员只能通过初始化表方式进行初始化。
改正:
去掉第9行,在第7行后加初始化表,即第9行改为:
CTest(intiVar=0):
m_iVar(iVar)
//7
4.参考答案:
出错行:
第42行原因:
抽象类不能用来直接创建对象。
改正:
将第42行改为:
CDeriveobj(10);
//42
六、编程题(本大题共2个小题,每小题8分,共16分)
1.参考程序:
#include
usingnamespacestd;
template
TypeAbs(TypetVar)
{
if(tVar>=0)returntVar;
elsereturn-tVar;
}
intmain()
cout<cout<cout<cout<return0;
}
2.参考程序:
#include
usingnamespacestd;
classCComplex
{
public:
CComplex(doubledReal,doubledImage=0){
m_dReal=dReal;
m_dImage=dImage;
}
voidShow()
{
cout<if(m_dImage>0)
{
cout<<"+"<elseif(m_dImage<0)
{
cout<<"-"<<-m_dImage<<"i"<}
}
CComplexoperator+(constCComplex&obj)
{
CComplexobjTemp(m_dReal+,m_dImage+;returnobjTemp;
}
private:
doublem_dReal,m_dImage;
};
intmain()
{
CComplexobj1(2,6),obj2(3,8),obj3(0);
();
();
();
obj3=obj1+obj2;
();
return0;