return0;
}
上面程序的输出结果为:
5686.89.63(阅读下面程序,写出输出结果。
#include
usingnamespacestd;classCTest
{public:
CTest(intiVar):
m_iVar(iVar)
{m_iCount++;}
~CTest(){}
voidPrint()const;
staticintGetCount()
{returnm_iCount;}private:
intm_iVar;
staticintm_iCount;};
intCTest:
:
m_iCount=0;voidCTest:
:
Print()const{cout<m_iVar<<""<m_iCount<<"";}
intmain()
{CTestoTest1(6);
oTest1.Print();
CTestoTest2(8);
oTest2.Print();
cout<:
GetCount();
cout<return0;
}
上面程序的输出结果为:
61822
4(阅读下面程序,写出输出结果。
#includeusingnamespacestd;classCTest
{public:
CTest(intiX=0,intiY=0,intiZ=0):
m_iZ(iZ)
{m_iX=iX;
m_iY=iY;}
voidPrint()
{cout<cout<voidPrint()const
{cout<intm_iX,m_iY;
constintm_iZ;
};
intmain()
{CTestoTest1;
oTest1.Print();
CTestoTest2(1,6,8);
oTest2.Print();
constCTestoTest3(6,0,18);
oTest3.Print();
cout<return0;}
上面程序的输出结果为:
0
0
1
6
18
五、程序改错题(本大题共4小题,每小题5分,共20分)指出下面程序中的错误,说明错误原因,并加以改正。
1(下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。
#include//1usingnamespacestd;//2
//3
classCTest//4{//5
public:
//6
CTest(intiVar=0):
m_iArr(iVar)//7
{//8
cout<<"构造函数:
"<}//10
//11
void~CTest()【析构函数不能有返回值类型】
//12
{//13
cout<<"析造函数:
"<}//15
//16
private:
//17
intm_iArr;//18};//19
//2
//21
intmain()//22{//23
CTestoTest1,oTest2(8);//24
cout<//26
return0;//27
}//28
2(下面程序中类的定义中有一处错误,请指出出错的行,
说明错误原因,并加以改正。
#include//1usingnamespacestd;//2
//3
classCTest//4{//5
public:
//6
CTest(intiA=0,intiB):
m_iA(iA),m_iB(iB)//7
{【带缺省的参数应放在参数表的尾部,气候不允许
又不带缺省的参数】
//8
}//9
//10
voidShow()//11
{//12
cout<}//14
//15
private:
//16
intm_iA,m_iB;//17
};//18
//19
//20
intmain()//21{//22
CTestoTest(12,16);//23
oTest.Show();//24
cout<//26
return0;//27}//28
3(下面程序中类的定义中有一处错误,请指出出错的行,
说明错误原因,并加以改正。
#include//1usingnamespacestd;//2
//3
classCTest//4{//5
public:
//6
CTest(intiVar=0)//【CTest(intiVar=0):
m_iVar(iVar)】
//7
{//8
m_iVar=iVar(删掉)
//9
}//10
//11
voidPrint()const//12
{//13
cout<}//15
//16
private:
//17
constintm_iVar;//18};//19
//20
//21
intmain()//22{//23
constCTestoTest(16);//24
oTest.Print();//25
cout<//27
return0;//28}//29
4(下面程序中有一处错误,请指出出错的行,说明错误原
因,并加以改正。
#include
//1
usingnamespacestd;
//2
//3
classCBase
//4
{//5
public:
//6
CBase(intiBase=0):
m_iBase(iBase)
//7
{//8
}//10
//11
virtualvoidShow(,)=0;
//12
//13
intGet()const
//14
{//15
returnm_iBase;
//16
}//17
//18
private:
//19
intm_iBase;
//20
};//21
//22
classCDerive:
publicCBase
//23
{//24public:
//25
CDerive(intiBase=0,intiDerive=0):
CBase(iBase)
//26
{//27
m_iDerive=iDerive;
//28
}//29
//30
voidShow()
//31
{//32
cout<:
Get()<<","<//33
}//34
//35private:
//36
intm_iDerive;
//37
};//38
//39intmain()
//40
{//41
CBaseobj(10);//CDeriveobj(10)
//42
obj.Show();
//43
return0;
//44
}//45
六、编程题(本大题共2个小题,每小题8分,共16分)1(编写一个函数模板,用于求参数的绝对值,并编写测试程序进行测试。
函数模板声明如下:
templateTypeAbs(TypetVar)
2(定义一个复数类CComplex,定义带有2个参数(其中一个为缺省参数)的构造函数,显示复数值的函数Show(),重载“+”运算符(用成员函数实现),并编写测试程序进行测试。
C++面向对象程序设计模拟试题一参考答案一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
A3(A4(C5(C1(B2(
6(D7(D8(D9(A10(A二、判断正误题(本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“?
”错误的划上“×”。
1(参考答案:
?
2(参考答案:
×
3(参考答案:
×
4(参考答案:
×
5(参考答案:
?
6(参考答案:
?
三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在每小题的空格内。
错填或不填均无分。
1(参考答案:
new
2(参考答案:
class或typename
3(参考答案:
重载
4(参考答案:
对象
5(参考答案:
静态
6(参考答案:
operator+
四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。
1(参考答案:
97215
2(参考答案:
5686.89.63(参考答案:
618224(参考答案:
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)
//7
3(参考答案:
出错行:
第9行
原因:
常数据成员只能通过初始化表方式进行初始化。
改正:
去掉第9行,在第7行后加初始化表,即第9行改为:
CTest(intiVar=0):
m_iVar(iVar)
//7
4(参考答案:
出错行:
第42行
原因:
抽象类不能用来直接创建对象。
改正:
将第42行改为:
CDeriveobj(10);
//42
六、编程题(本大题共2个小题,每小题8分,共16分)1(参考程序:
#include
usingnamespacestd;
templateTypeAbs(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+obj.m_dReal,m_dImage+
obj.m_dImage);
returnobjTemp;}
private:
doublem_dReal,m_dImage;
};
intmain()
{CComplexobj1(2,6),obj2(3,8),obj3(0);
obj1.Show();
obj2.Show();
obj3.Show();
obj3=obj1+obj2;
obj3.Show();
return0;
}