C++面向对象程序设计模拟试题四Word格式.docx
- 文档编号:6042201
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:17
- 大小:20.96KB
C++面向对象程序设计模拟试题四Word格式.docx
《C++面向对象程序设计模拟试题四Word格式.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计模拟试题四Word格式.docx(17页珍藏版)》请在冰点文库上搜索。
10.由于常对象不能被更新,因此(A)。
A)通过常对象只能调用它的常成员函数
B)通过常对象只能调用静态成员函数
C)常对象的成员都是常成员
D)通过常对象可以调用任何不改变对象值的成员函数
二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确的答案写在每小题的空格内。
错填或不填均无分。
1.对于派生类的构造函数,在定义对象时构造函数的执行顺序为:
先执行调用____基类_______的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。
2.声明类模板应使用关键字(template)。
3.重载的关系运算符和逻辑运算符的返回类型应当是(布尔型)。
4.在面向对象方法中,类的实例称为(对象)。
5.在类的对象被释放时,(析构)函数会被自动调用。
三、完成程序填题(本大题共3个小题,每小题3分,共9分)下面程序都留有空白,请将程序补充完整,
1.请完成下面的程序
#include<
iostream>
//预处理命令
usingnamespacestd;
//使用标准命名空间std
//测试静态成员类
classTest
{
private:
inta;
//数据成员
public:
Test(intx=0):
[1]{}//构造函数
voidShow(){cout<
<
"
a:
"
<
a<
endl;
}//显示数据成员之值
};
intmain(void)//主函数main(void)
Testobj(168);
//定义对象
obj.Show();
//显示数据成员之值
return0;
//返回值0,返回操作系统
}
2.请完成下面的程序
//预处理命令
//使用标准命名空间std
//整数类
classInteger
//数据成员
Integer(intx=0){a=x;
}//构造函数
[2](){returna;
}//类型转换函数(将类类型转换为整型)
intmain(void)//主函数main(void)
Integera=6;
//定义整数对象
cout<
//显示整数
//返回值0,返回操作系统
3.请完成下面的程序
//复数类
classComplex
doublerealPart;
//实部
doubleimagePart;
//虚部
Complex(doublereal=0,doubleimage=0):
realPart(real),imagePart(image){}//构造函数
doubleGetRealPart()const{returnrealPart;
}//返回实部
doubleGetImagePart()const{returnimagePart;
}//返回虚部
Complexoperator+(constComplex&
a)const//重载加法运算符+
{
returnComplex([3]);
//返回和
}
Complexa(1,2),b(2,6),c;
//定义复数对象
c=a+b;
//复数加法运算
a="
a.GetRealPart()<
+"
a.GetImagePart()<
i"
//显示a
b="
b.GetRealPart()<
b.GetImagePart()<
//显示b
c="
c.GetRealPart()<
c.GetImagePart()<
//显示c
四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。
1.阅读下面程序,写出输出结果。
classA
virtualvoidShow()const
{cout<
ClassA"
classB:
publicA
voidShow()const
ClassB"
voidShow(constA&
obj)
{obj.Show();
intmain(void)
Aa;
Bb;
Show(a);
Show(b);
A*p;
p=&
a;
p->
Show();
b;
B*q;
q=&
q->
//返回值0,返回操作系统
上面程序的输出结果为:
2.阅读下面程序,写出输出结果。
template<
classElemType>
voidShow(ElemTypea[],intn)
for(inti=0;
i<
n;
i++)
a[i]<
;
inta[]={1,6,9};
Show(a,sizeof(a)/sizeof(int));
Show(a,2);
//返回值0,返回操作系统
3.阅读下面程序,写出输出结果。
//预处理命令
//使用标准命名空间std
classMyClass
MyClass(){count++;
~MyClass(){count--;
staticintGetCount(){returncount;
staticintcount;
intMyClass:
count=0;
//初始化静态数据成员
MyClassobj1;
MyClass:
GetCount()<
MyClassobj2;
MyClassobj3;
obj1.GetCount()<
MyClass*p=newMyClass;
deletep;
//返回值0,返回操作系统
4.阅读下面程序,写出输出结果。
A(){cout<
A()"
~A(){cout<
~A()"
virtualvoidf(){cout<
A:
f()"
B(){cout<
B()"
~B(){cout<
~B()"
voidf(){cout<
B:
}
intmain(void)
Bobj;
A*p=&
obj;
f();
五、程序改错题(本大题共3小题,每小题5分,共15分)指出下面程序中的错误的行,说明错误原因,并加以改正。
1.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。
//预处理命令//1
//使用标准命名空间std//2
//3
classTest//4
{//5
//6
voidTest(){cout<
构造函数"
}//7
~Test(){cout<
析造函数"
}//8
//9
//10
intmain(void)//11
{//12
Testobj;
//13
//14
//返回值0,返回操作系统//15
}//16
2.下面程序中有错误,请指出出错的行,说明错误原因,并加以改正。
//1
//2
classMyClass//4
MyClass(intx=0):
a(x){}//7
//8
voidShow()//9
}//10
//11
//12
//13
//15
intmain(void)//16
{//17
constMyClassoTest(18);
//18
oTest.Show();
//19
//20
//21
}//22
3.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。
classA//4
virtualvoidShow()=0;
//7
publicA//10
{//11
B(inta=0):
x(a){}//13
voidShow()//15
{//16
cout<
x<
//17
}//18
//19
//20
intx;
//21
//22
//23
intmain(void)//24
{//25
Aobj(10);
//26
//27
//28
//29
}//30
六、编程题(本大题26分)
编写程序,定义抽象基类Shape(形状),由它派生出3个派生类:
Circle(圆形)、Rectangle(矩形)和Square(正方形),用函数函数ShowArea()分别显示各种图形的面积,最后还要显示所有图形的总面积。
C++面向对象程序设计模拟试题四参考答巡查
1.C2.C3.C4.A5.C
6.A7.B8.D9.A10.A
1.参考答案:
基类
2.参考答案:
template
3.参考答案:
bool或布尔型
4.参考答案:
对象
5.参考答案:
析构函数
[1]a(x)
[2]operatorint
[3]realPart+a.realPart,imagePart+a.imagePart或this->
realPart+a.realPart,this->
imagePart+a.imagePart
ClassA
ClassB
16916
1
2
3
4
A()
B()
f()
~B()
~A()
第7行“voidTest(){cout<
}”有错,构造函数没有返回值类型,应改为,应改为“Test(){cout<
}”。
第9行,第18行与第19行有错,常对象只能调用常成员函数,可将第18行的“constMyClassoTest(18);
”改为“MyClassoTest(18);
”;
或将第9行的“voidShow()”改为“voidShow()const”。
第26行“Aobj(10)”有错,Cbase是抽象类,不能直接生成对象,可改为“Bobj(10)”。
参考程序:
//预处理命令
//使用标准命名空间std
constdoublePI=3.1415926;
//定义常量PI
classShape
Shape(){}//构造函数
virtual~Shape(){}//析构函数
virtualShowArea()=0;
//显示面积
staticdoubletotalArea;
//总面积
staticvoidShowTotalArea(){cout<
总面积:
totalArea<
classCircle:
publicShape
doubleradius;
//半径
Circle(doubler):
radius(r){totalArea+=PI*r*r;
}//构造函数
~Circle(){}//析构函数
virtualShowArea(){cout<
圆面积:
PI*radius*radius<
};
//显示面积
classRectangle:
doublelength;
//长
doublewidth;
//宽
Rectangle(doublel,doublew):
length(l),width(w){totalArea+=l*w;
}//构造函数
~Rectangle(){}//析构函数
矩形面积:
length*width<
classSquare:
//边长
Square(doublel):
length(l){totalArea+=l*l;
}//构造函数
~Square(){}//析构函数
正方形面积:
length*length<
doubleShape:
totalArea=0;
//初始化totalArea
intmain(void)
Circlec
(1);
//定义圆对象
c.ShowArea();
//显示面积
Rectangler(1,2);
//定义矩形对象
r.ShowArea();
Squarez(3);
//定义正方形对象
z.ShowArea();
Sh
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 面向 对象 程序设计 模拟 试题