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

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

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

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

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

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

C++面向对象程序设计模拟试卷三

一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。

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

1.下面有关重载函数的描述中,正确的是()。

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

C)重载函数必须具有不同的形参表D)重载函数名可以不同

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

A)void~MyClass()。

B)~MyClass(intn)。

C)MyClass()。

D)~MyClass()。

3.()是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。

A)模板B)类C)对象D)函数

4.下面关于静态成员函数的途术中错语的是()。

A.静态成员函数可以有返回值B.this指针可以指向静态成员函数

C.静态成员函数可以具有指针参数D.静态成员函数可有具有返回值类型

5.定义类模板时要使用关键字()。

A.privateB.publicC.deleteD.template

6.下列是重载乘法运算符的函数原型声明,其中错误的是()。

A)MyClassoperator*(double,double)。

B)MyClassoperator*(double,MyClass)。

C)MyClassoperator*(MyClass,double)。

D)MyClassoperator*(MyClass,MyClass)。

7.以下()成员函数表示纯虚函数。

A)virtualintfun(int)B)voidfun(int)=0

C)virtualvoidfun()=0D)virtualvoidfun(int){}

8.关于纯虚函数,下列表述中正确的是()。

A)纯虚函数的声明总是以"=0"结束B)含有纯虚函数的类可以定义对象

C)含有纯虚函数的类是抽象类D)上面都是错误的

9.()解决二义性问题。

A.只能使用作用域分辨操作符B.只能使用虚基类

C.使用作用域分辨操作符或虚基类D.上面都不能

10.实现编译时的多态性要使用()。

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

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

错填或不填均无分。

1.定义一个函数名为fun,返回值为int,没有参数的纯虚函数的声明是()。

2.定义静态成员函数应使用关键字()。

3.在C++中,如果类的名称是CTest,则此类的构造函数名称为()。

4.在类的对象被创建时,()函数会被自动调用。

5.类中数据成员和成员函数的默认访问级别为()。

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

1.请完成下面的程序

#include//预处理命令

usingnamespacestd。

//使用标准命名空间std

//测试静态成员类

classTest

{

private:

[1]intcount。

//对象数

public:

Test(){count++。

}//构造函数,实现对对象进行计数

staticvoidShow(){cout<<"共有"<

"<

}//显示对象数

}。

intTest:

:

count=0。

//初始化静态数据成员赋初值

intmain(void)//主函数main(void)

{

Testobj1,obj2,obj3。

//定义对象

Test:

:

Show()。

//显示对象数

return0。

//返回值0,返回操作系统

}

2.请完成下面的程序

#include//预处理命令

usingnamespacestd。

//使用标准命名空间std

//整数类

classInteger

{

private:

inta。

//数据成员

public:

Integer(intx=0){a=x。

}//构造函数

operatorint(){returna。

}//类型转换函数

Integeroperator+(constInteger&i)const//重载加法运算符+

{

return[2]。

//返回和

}

}。

intmain(void)//主函数main(void)

{

Integera

(2),b(3),c。

//定义整数对象

c=a+b。

//求和

cout<

//显示和

return0。

//返回值0,返回操作系统

}

3.请完成下面的程序

#include//预处理命令

usingnamespacestd。

//使用标准命名空间std

template

classA

{

private:

ElemTypea。

//数据成员

public:

A(ElemTypex):

a(x){}//构造函数

voidShow()const

{cout<

}//显示a之值

}。

intmain(void)//主函数main(void)

{

A<[3]>obj("Hello,world!

")。

//定义对象

obj.Show()。

//显示相关信息

return0。

//返回值0,返回操作系统

}

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

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

#include//预处理命令

usingnamespacestd。

//使用标准命名空间std

classPoint

{

private:

intx。

//x坐标

inty。

//y坐标

public:

Point(inta=0,intb=0):

x(a),y(b){}

intGetX()const{returnx。

}

intGetY()const{returny。

}

voidSetX(inta){x=a。

}

voidSetY(intb){y=b。

}

}。

intmain(void)

{

Pointobj1。

constPointobj2(9,98)。

cout<

obj1.SetX(5)。

cout<

obj1.SetY(18)。

cout<

cout<

cout<

return0。

//返回值0,返回操作系统

}

上面程序的输出结果为:

1.参考答案:

0

5

18

9

98

 

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

#include//预处理命令

usingnamespacestd。

//使用标准命名空间std

classArray

{

private:

int*elem。

//数组元素存储空间

intsize。

//数组元素个数

public:

Array(inta[],intsz):

elem(a),size(sz){}//构造函数

intGetSize(){returnsize。

}

int&operator[](intpos){returnelem[pos-1]。

}//重载下标运算符[]

}。

intmain(void)

{

inta[]={1,2,3,4,5}。

Arrayobj(a,5)。

obj[1]=8。

for(inti=1。

i<=obj.GetSize()。

i++)//依次输出数组各元素之值

cout<

cout<

return0。

//返回值0,返回操作系统

}

上面程序的输出结果为:

 

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

#include//预处理命令

usingnamespacestd。

//使用标准命名空间std

classA

{

public:

A(){cout<<"构造A"<

}//构造函数

~A(){cout<<"析构A"<

}//析构函数

}。

classB:

publicA

{

public:

B(){cout<<"构造B"<

}//构造函数

~B(){cout<<"析构B"<

}//析构函数

}。

intmain(void)

{

Bobj。

A*p=newA。

return0。

//返回值0,返回操作系统

}

上面程序的输出结果为:

 

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

#include//预处理命令

usingnamespacestd。

//使用标准命名空间std

template

ElemTypef(ElemTypex)

{

returnx*(ElemType)5.1。

}

template

voidf(ElemTypex,ElemTypey)

{

x=x*1.1。

y=y*1.1。

cout<

cout<

}

intmain(void)

{

cout<

f(1,2)。

f(1.0,2.0)。

system("PAUSE")。

//调用库函数system(),输出系统提示信息

return0。

//返回值0,返回操作系统

}

上面程序的输出结果为:

 

五、程序改错题(本大题共3小题,每小题5分,共15分)指出下面程序中的错误,说明错误原因,并加以改正。

1.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。

#include//1

usingnamespacestd。

//2

//3

classA//4

{//5

public:

//6

A(intx=0,inty=0):

a=x,b=y{}//7

voidShow()//8

{//9

cout<

//10

}//11

//12

private:

//13

inta,b。

//14

}。

//15

//16

intmain(void)//17

{//18

Aobj(18)。

//19

obj.Show()。

//20

//21

return0。

//22

}//23

 

2.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。

#include//预处理命令//1

usingnamespacestd。

//使用标准命名空间std//2

//3

template//4

ElemTypeMax(ElemTypea,ElemTypeb)//5

{//6

return(a>b)?

a:

b。

//5

}//6

//7

intmain(void)//8

{//9

cout<

//10

//11

return0。

//返回值0,返回操作系统//12

}//13

 

3.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。

#include//1

usingnamespacestd。

//2

//3

classInteger//4

{//5

public:

//6

Integer(inta=0):

i(a){}//7

//8

intoperatorint()//9

{//10

returni。

//11

}//12

//13

private:

//14

inti。

//15

}。

//16

//17

intmain(void)//18

{//19

Integerobj(168)。

//20

cout<

//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,返回操作系统

}

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

当前位置:首页 > PPT模板 > 简洁抽象

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

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