private:
//10
inta;//11
};//12
//13
intmain()//14
{//15
TestoTest;//16
oTest.SetValue(18);//17
oTest.Show();//18
return0;//19
}//20
六、编程题(本大题共2小题,每小题10分,共20分)
1.设计一个类Rect,要求如下:
(1)该类中的私有数据成员length,width存放它的长和宽,并且设置它们的默认值是0。
(2)通过成员函数设置其长和宽,并确保长和宽都在(0,50)范围之内。
(3)实现求周长函数GetPerimeter()。
2.定义一个二维座标类Vector2d,二个数据成员为double型x,y为private属性。
定义代二个参数的构造函数和一个Show()函数用以输出x,y的值,另外作为成员函数重载的运算苻”+”的功能是将此类二个对象的数据成员x和y对应相加。
这些成员函数的属性均为public.请用C++编写此程序,并编写测试程序进行测试
C++面向对象程序设计模拟试题六参考答案
一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中,只有一个是苻合题目要求的。
请将其代码填写在题后的括号内。
错选,多选或未选均无分。
1.D)2.D)3.A)4.C)5.D)
6.B)7.D)8.A)9.A)10.A).
11.D)12.A)13.B)14.B)15.B)
二、判断正误题(本大题共5小题,每小题2分,共10分)判断正误,在题后的括号内,正确的划上“√”错误的划上”×”。
1.参考答案:
“×”
2.参考答案:
“×”
3.参考答案:
“√”
4.参考答案:
“×”
5.参考答案:
“√”
三、填空题(本大题共5小题,每小题2分,共10分)不写解题过程,将正确的答案写在每小题的空格内,错填或不填均无分
1.参考答案:
对象
2.参考答案:
10
3.参考答案:
模板函数
4.参考答案:
引用
5.参考答案:
operator<<
四、程序分析题(本大题共8小题,每小题3分,共24分)给出下面各程序的输出结果。
1.输出结果为:
A():
5
B():
0
A():
6
B():
7
2.输出结果为:
x=1,y=68
3.输出结果为:
15
4.输出结果为:
1:
n=10,2:
n=20
5.输出结果为:
5,6,7
6.程序的输出结果为:
2
7.程序的输出结果为:
12
8.程序的输出结果为:
921
五、程序改错题(本大题共3小题,共3处错,每改一错2分,共6分)指出下面程序中错误,说明错误原因,并加以改正。
1.参考答案:
笫7行基类中虚函数f()前应加关键字virtual修饰,应改为:
virtualvoidf(){cout<<"AA";}
笫21行p.f();应改当p->f();
2.参考答案:
笫7行应为形参增加默认值,例如改为
Test(intm=0):
a(m){}
六、编程题(本大题共2小题,每小题10分,共20分)
1.参考程序:
#include
usingnamespacestd;
classRect
{
private:
doublelength,width;
public:
Rect(doublel=0,doublew=0):
length(l),width(w){}
voidSet(doublel,doublew)
{
if(length<=0||length>=50||width<=0||width>=50)
throw"数据不在指定范围(0,50)!
";//抛出异常
length=l;
width=w;
}
doubleGetPerimeter(){return2*(length+width);}
};
intmain()
{
try//检查异常
{
Rectobj(1,8);
cout<<"周长:
"<}
catch(char*str)//捕捉异常
{//处理异常
cout<<"异常信息:
"<}
return0;
}
2.参考程序:
#include
usingnamespacestd;
classVector2d
{
doublex,y;
public:
Vector2d(doublea,doubleb):
x(a),y(b){}
voidShow(){cout<Vector2doperator+(Vector2d&obj);
};
Vector2dVector2d:
:
operator+(Vector2d&obj)
{returnVector2d(x+obj.x,y+obj.y);}
intmain()
{
Vector2dd1(3.5,4.5),d2(2.5,5.5),d3(0.0,0.0);
d3=d1+d2;
d3.Show();
return0;
}