C++面向对象程序设计模拟试题5.docx

上传人:b****9 文档编号:25221168 上传时间:2023-06-06 格式:DOCX 页数:13 大小:18.28KB
下载 相关 举报
C++面向对象程序设计模拟试题5.docx_第1页
第1页 / 共13页
C++面向对象程序设计模拟试题5.docx_第2页
第2页 / 共13页
C++面向对象程序设计模拟试题5.docx_第3页
第3页 / 共13页
C++面向对象程序设计模拟试题5.docx_第4页
第4页 / 共13页
C++面向对象程序设计模拟试题5.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C++面向对象程序设计模拟试题5.docx

《C++面向对象程序设计模拟试题5.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计模拟试题5.docx(13页珍藏版)》请在冰豆网上搜索。

C++面向对象程序设计模拟试题5.docx

C++面向对象程序设计模拟试题5

C++面向对象程序设计模拟试题五

一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是苻合题目要求的。

请将其代码填写在题后的括号内。

错选,多选或未选均无分。

1.下列对类的构造函数和析构函数描述正确的是()。

A)构造函数可以重载,析构函数不能重载

B)构造函数不能重载,析构函数可以重载

C)构造函数可以重载,析构函数可以重载

D)构造函数不能重载,析构函数不能重载

2.在函数定义前加上关键字“inline”,表示该函数被定义为()。

A)重载函数B)内联函数

C)成员函数D)普通函数

3.下面有关重载函数的说明中,()是正确的。

A)重载函数必须具有不同的返回值类型

B)重载函数形参个数必须不同

C)重载函数一般具有不同的形参列表

D)重载函数名可以不同

4.下列有关类与对象的说法中,()是不正确的。

A)对象是类的一个实列

B)任何一个对象只能属于一个具体的类

C)一个类只能有一个对象

D)类和对象的关糸和数椐类型与变量的关糸类似

5.已知:

Print()函数是一个类的常成员函数,它无返回值,下列表示中,正确的是()。

A)voidPrint()const;B)constvoidPrint();

C)voidconstPrint();D)voidPrint(const)

6.假定Myclass为一个类,那么下列的函数说明中()为该类的析构函数。

A)void~Myclass();B)~Myclass(intn);

C)Myclass();D)~Myclass()

7.下面类的定义中有()处错误。

classmyclass

{

inti=0;

public:

voidmyclass();

~myclass(value);

};

A)1B)2C)3D)4

8.说明虚函数的关键字是()。

A)inlineB)virtualC)defineD)static

9.cout是某个类的标准对象的引用,该类是()。

A)ostreamB)istreamC)stdoutD)stdin

10.如果class类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为()。

A)publicB)protectedC)privateD)static

二、填空题(本大题共5小题,每小题2分,共10分)不写解题过程,将正确的答案写在每小题的空格内,错填或不填均无分。

1.重载运算苻“-”的函数名为()。

2.C++中类的用途有两种,一种是类的实例化,即生成类的对象,另一种是通过

(),派生出新的类。

3.派生类中的成员不能直接访问基类中的()成员。

4.编译时多态性可以用()函数实现。

5.使用new建立的动态对象在不用时应该用()删除,以便释放所占用空间。

三、程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果。

1.若有以下程序:

#include

usingnamespacestd;

classA

{

inta;

public:

A(intaa=0){a=aa;}

~A(){cout<<"DestructorA!

"<

};

classB:

publicA

{

intb;

public:

B(intaa=0,intbb=0):

A(aa){b=bb;}

~B(){cout<<"DestructorB!

"<

};

intmain()

{

Bx(5),y(6,7);

return0;

}

上面程序的输出结果为:

2.若有以下程序:

#include

usingnamespacestd;

classPoint

{

intx,y;

public:

Point(){x=0;y=0;}

voidSetPoint(intx1,inty1){x=x1;y=y1;}

voidDisPoint(){cout<<"x="<

};

intmain()

{

Point*p=newPoint;

p->SetPoint(5,12);

p->DisPoint();

deletep;

return0;

}

上面程序的输出结果为:

 

3.若有以下程序:

#include

usingnamespacestd;

classSample

{

intn;

public:

Sample(inti){n=i;}

voidAdd(){s+=n;}

staticints;

voidDis(){cout<

};

intSample:

:

s=0;

intmain()

{

Samplea

(2),b(5),c(8);

a.Add();

b.Add();

c.Dis();

return0;

}

上面程序的输出结果为:

4.若有以下程序:

#include

usingnamespacestd;

classBase

{

public:

voidFun(){cout<<"1"<

};

classDerived:

publicBase

{

public:

voidFun(){cout<<"2"<

};

intmain()

{

Deriveda;

Base*p;

p=&a;

p->Fun();

a.Fun();

return0;

}

上面程序的输出结果为:

5.若有以下程序:

#include

usingnamespacestd;

template

voidFun(T1&x,T2&y)

{

if(sizeof(T1)>sizeof(T2))x=(T1)y;

elsey=(T2)x;

}

intmain()

{

doubled;

inti;

d=99.99;

i=88;

Fun(d,i);

cout<<"d="<

return0;

}

上面程序的输出结果为:

6.阅读下面程序,写出输出结果。

#include

usingnamespacestd;

classPoint

{

public:

Point(inta=0,intb=0):

x(a),y(b){}

intGetX()const{returnx;}

intGetY()const{returny;}

voidSetX(inta){x=a;}

voidSetY(inta){y=a;}

private:

intx;

inty;

};

intmain()

{

Pointp1;

constPointp2(3,4);

cout<

p1.SetX

(1);

cout<

p1.SetY

(2);

cout<

cout<

cout<

return0;

}

上面程序的输出结果为:

四、完成程序填题(本大题共4个小题,每小题3分,共12分)下面程序都留有空白,请将程序补充完整。

1.将如下程序补充完整。

#include

usingnamespacestd;

classTest

{

private:

intn;

public:

Test(intn){[1];}//实始化数据成员n为形能n

voidShow()const{cout<

};

intmain()

{

Testi(108);

i.Show();

return0;

}

参考答案:

this->n或Test:

:

n

2.将如下程序补充完整。

#include

usingnamespacestd;

classA

{

private:

inta;

public:

A(intx){a=x;}

voidShow()const

{cout<<"a:

"<

};

classB:

publicA

{

protected:

intb;

public:

B(intx,inty):

[2]{b=y;}//初始化a为x,y为b

voidShow()const

{

A:

:

Show();

cout<<"b:

"<

}

};

intmain()

{

Bobj(5,18);

obj.Show();

return0;

}

3.将如下程序补充完整。

#include

usingnamespacestd;

classTest

{

private:

staticintnum;

public:

Test(){num++;}

~Test(){num--;}

staticvoidShowObjectNum(){cout<

};

[3]//静态数据成员num初始化为0

intmain()

{

Test:

:

ShowObjectNum();

Testobj;

Test:

:

ShowObjectNum();

return0;

}

4.将如下程序补充完整。

#include

usingnamespacestd;

classComplex

{

private:

doublerealPart;

doubleimagePart;

public:

Complex(doublereal=0,doubleimage=0):

realPart(real),imagePart(image){}

Complex[4](constComplex&a)const//重载加法运算符+

{returnComplex(realPart+a.realPart,imagePart+a.imagePart);}

voidShow()const{cout<

};

intmain()

{

Complexa(1,2),b(2,6),c;

c=a+b;

cout<<"a=";a.Show();

cout<<"b=";b.Show();

cout<<"c=";c.Show();

return0;

}

五、编程题(本大题共2小题,第1小题12分,第2小题16分,共28分)

1.设计一个类DateInfo,要求其满足下述要求:

(1)要求有一个无参的构造函数,其初始的年、月、日分别为:

2010,6,8。

(2)要求有一个带参数的构造函数,其参数分别对应年、月、日。

(3)要求用一个成员函数实现日期的设置。

(4)要求用一个成员函数实现输出日期。

2.定义Staff(员工)类,由Staff分别派生出Saleman(销售员)类和Manager(经理)类,要求:

(1)在Staff类中包含的数据成员有编号(num)、姓名(name)、出勤率(rateOfAttend)、基本工资(basicSal)和奖金(prize)。

在Saleman类中还包含数据成员销售员提成比例(deductRate)和个人销售额(personAmount),在Manager类中还包含数据成员经理提成比例(totalDeductRate)和总销售额(totalAmount)

(2)各类人员的实发工资公式如下:

员工实发工资=基本工资+奖金*出勤率

销售员实发工资=基本工资+奖金*出勤率+个人销售额*销售员提成比例

经理实发工资=基本工资+奖金*出勤率+总销售额*经理提成比例

(3)每个类都有构造函数、输出基本信息函数(Output)和输出实发工资函数(OutputWage)。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1