//21
//22
return0。
//23
}//24
六、编程题(本大题26分)
编写程序,定义抽象基类Shape(形状),由它派生出2个派生类:
Circle(圆形)和Rectangle(矩形),用函数Show()分别显示各种图形的相关信息,最后还要显示所有图形的总面积。
C++面向对象程序设计模拟试卷三参考答安全
一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.C2.D3.A4.B5.D
6.A7.C8.C9.C10.A
二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确的答案写在每小题的空格内。
错填或不填均无分。
1.参考答案:
intfun()=0。
2.参考答案:
static
3.参考答案:
CTest
4.参考答案:
构造函数
5.参考答案:
private或私有
三、完成程序填题(本大题共3个小题,每小题3分,共9分)下面程序都留有空白,请将程序补充完整,
1.参考答案:
[1]static
2.参考答案:
[2]a+i.a或this->a+i.a
3.参考答案:
[3]char*
四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。
1.参考答案:
0
5
18
9
98
2.参考答案:
82345
3.参考答案:
构造A
构造B
构造A
析构B
析构A
4.参考答案:
15.3
1
2
1.1
2.2
五、程序改错题(本大题共3小题,每小题5分,共15分)指出下面程序中的错误,说明错误原因,并加以改正。
1.参考答案:
第7行“a=x,b=y”有错,初始列表的格式错,应改为“a(x),b(y)”。
2.参考答案:
第10行有错,模板函数无隐式转换功能,函数调用Max(16.8,518)无法确定参数类型,可第11行的“Max(16.8,518)”改为“Max(16.8,518.0)”。
3.参考答案:
第9行“intoperatorint()”有错,类型转换函数不能有返回值类型,可改为“operatorint()”。
六、编程题(本大题26分)
参考程序:
#include//预处理命令
usingnamespacestd。
//使用标准命名空间std
constdoublePI=3.1415926。
//定义常量PI
classShape
{
public:
Shape(){}//构造函数
virtual~Shape(){}//析构函数
virtualShow()=0。
//显示面积
staticdoubletotalArea。
//总面积
staticvoidShowTotalArea(){cout<<"总面积:
"<}
}。
classCircle:
publicShape
{
private:
doubleradius。
//半径
public:
Circle(doubler):
radius(r){totalArea+=PI*r*r。
}//构造函数
~Circle(){}//析构函数
virtualShow(){cout<<"圆面积:
"<}。
//显示面积
}。
classRectangle:
publicShape
{
private:
doublelength。
//长
doublewidth。
//宽
public:
Rectangle(doublel,doublew):
length(l),width(w){totalArea+=l*w。
}//构造函数
~Rectangle(){}//析构函数
virtualShow(){cout<<"矩形面积:
"<}。
//显示面积
}。
doubleShape:
:
totalArea=0。
//初始化totalArea
intmain(void)
{
Circlec
(1)。
//定义圆对象
c.Show()。
//显示面积
Rectangler(1,2)。
//定义矩形对象
r.Show()。
//显示面积
Shape:
:
ShowTotalArea()。
//显示总面积
return0。
//返回值0,返回操作系统
}