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

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

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

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

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

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

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

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

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

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

1.类的析构函数的作用是(d)。

A)作为类的一般成员函数

B)类的初始化

C)对象的初始化

D)对象的删除

2.一个类的友元函数或友元类可以访问该类的(d)。

A)私有成员B)保护成员C)公有成员D)所有成员

3.下列关于成员函数特征的描述中,(a)是错误的。

A)成员函数一定是内联函数B)成员函数可以重载

C)成员函数可以设置参数的默认值D)成员函数可以是静态的

4.下列函数中,(c)不是类的成员函数。

A)构造函数B)析构函数C)友元函数D)拷贝构造函数

5.下列对派生类的描述中,(d)是错误的。

A)一个派生类可以作为另一个派生类的基类

B)派生类至少有一个基类

C)派生类的成员除了它自己的成员外,还包含了它的基类的成员

D)派生类中继承的基类成员的访问权限到派生类中保持不变

6.下列的描述中,(b)是错误的。

A)公有继承时基类中的public成员在派生类中仍是public的

B)公有继承时基类中的private成员在派生类中仍是private的

C)公有继承时基类中的protected成员在派生类中仍是protected的

D)私有继承时基类中的public成员在派生类中仍是private的

7.下列虚基类的声明中正确的是(d)。

A)classvirtualB:

publicAB)virtualclassB:

publicA

C)classB:

publicAvirtualD)classB:

virtualpublicA

8.若类A和类B的定义如下:

classA

{

inti,j;

public:

A(intm,intn):

i(m),j(n){}

intGeti(){returni;}

};

classB:

publicA

{

intk;

public:

B(intm,intn,intu):

A(m,n),k(u){}

voidMake(){k=i*j;}

};

intmain()

{

Bb(1,2,3);

return0;

}

则上述定义中,()是非法的表达式.

A)k=i*j;B)intk;C)returni;D)voidMake()

9.若有以下程序:

#include

usingnamespacestd;

classA

{

public:

inta;

A(){a=10;}

};

classA1:

publicA1.

{

public:

A1(){a=a+1;}\

};

classA2:

publicA

{

public:

A2(){a=a+2;}

};

classB:

publicA1,publicA2

{

public:

B(){}

voidPrint(){cout<

};

intmain()

{

Bobj;

obj.Print();

return0;

}

则程序运行后的输出结果为:

A)产生语法错误B)13C)12D)10

10.在下面的4个关键字中,(a )是用来说明虚函数的。

A)virtualB)publicC)protectedD)private

11.实现运行时的多态要使用(d)。

A)重载函数B)析构函数C)构造函数D)虚函数

12.如果一个类至少有一个纯虚函数,那么该类称为(a)。

A)抽象类B)虚基类C)派生类D)以上都不对

13.cin是某个类的标准对象,该类是(b)。

A)ostreamB)istreamC)stdoutD)stdin

14.调用一个成员函数时,使用动态联编的情况是(b)。

A)通过对象调用一虚函数B)通过指针或引用调用一虚函数

C)通过对象调用一静态函数D)通过指针或引用调用一静态函数

15.假定CTest为一个类,并且有一无默认值的有参构造函数和一无参构造函数,则执行“CTestobjTest;”语句时将自动调用该类的(b)。

A)有参构造函数B)无参构造函数

C)拷贝构造函数D)赋值重载函数

二、判断正误题(本大题共5小题,每小题2分,共10分)判断正误,在题后的括号内,正确的划上“√”错误的划上”×”。

1.在用class定义一个类时,数椐成员和成员函数默认的访问权限是public。

2.若类Y是类X的私有派生类,类Z是类Y的公有派生类,则类Z不能访向类X的公有成员和保护成员。

3.C++中设置虚基类的目的是实现运行时的多态。

4.模板类与类模板的意义完全相同。

5.只有常成员函数才可以操作常对象。

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

1.类的具体表现是通过创建来操作的。

2.假定AB为一个类,则执行“ABa[10];”语句时,系统自动调用该类的构造函数的次数为。

3.使用函数模板的方法是先说明函数模板,然后实例化成相应的进行调用执行。

4.拷贝构造函数用它所在类的作为参数。

5.重载运算符“<<”的函数名为。

四、程序分析题(本大题共8小题,每小题3分,共24分)给出下面各程序的输出结果。

1.若有以下程序:

#include

classA

{

inta;

public:

A(intaa=0)

{

a=aa;

cout<<"A():

"<

}

};

classB:

publicA

{

intb;

public:

B(intaa=0,intbb=0):

A(aa)

{

b=bb;

cout<<"B():

"<

}

};

intmain()

{

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

return0;

}

输出结果为:

2.若有以下程序:

#include

classPoint

{

intx,y;

public:

Point(intm=0,intn=0){x=m;y=n;}

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

};

intmain()

{

Point*p=newPoint(1,68);

p->Show();

deletep;

return0;

}

输出结果为:

3.若有以下程序:

#include

classSample

{

intn;

public:

Sample(inti){n=i;s+=n;}

staticints;

voidShow(){cout<

};

intSample:

:

s=0;

intmain()

{

Samplea

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

c.Show();

return0;

}

输出结果为:

4.若有以下程序:

#include

classSample

{

intn;

public:

Sample(inti){n=i;}

voidPrint(){cout<<"1:

n="<

voidPrint()const{cout<<"2:

n="<

};

intmain()

{

Samplea(10);

constSampleb(20);

a.Print();

b.Print();

return0;

}

输出结果为:

5.若有以下程序:

#include

classTest

{

intx;

public:

voidSetx(inti){x=i;}

intPutx(){returnx;}

};

intmain()

{

Test*p;

Testa[3];

a[0].Setx(5);

a[1].Setx(6);

a[2].Setx(7);

for(intj=0;j<3;j++)

{

p=&a[j];

cout<Putx()<<",";

}

cout<

return0;

}

输出结果为:

6.若有以下程序:

#include

classBase

{

public:

Base(intx){a=x;}

voidShow(){cout<

private:

inta;

};

classDerived:

publicBase

{

public:

Derived(inti):

Base(i+1),b(i){}

voidShow(){cout<

private:

intb;

};

intmain()

{

Baseb(5),*pb;

Derivedd

(1);

pb=&d;

pb->Show();

return0;

}

输出结果为:

7.若有以下程序:

#include

classBase

{

public:

voidFun(){cout<<"1"<

};

classDerived:

publicBase

{

public:

voidFun(){cout<<"2"<

};

intmain()

{

Deriveda;

Base*p;

p=&a;

(*p).Fun();

a.Fun();

return0;

}

输出结果为:

 

8.下列程序的输出结果为

#include

template

classFF

{

TTa1,a2,a3;

public:

FF(TTb1,TTb2,TTb3){a1=b1;a2=b2;a3=b3;}

TTSum(){returna1+a2+a3;}

};

intmain()

{

FFx(2,3,4),y(5,7,9);

cout<

return0;

}

输出结果为:

六、编程题(本大题共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

六、编程题(本大题共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;

}

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

当前位置:首页 > 农林牧渔 > 林学

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

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