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

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

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

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

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

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

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

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

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

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

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

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

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

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

C)MyClass();D)~MyClass();

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

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

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

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

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

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

A)privateB)publicC)deleteD)template

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

//虽然我也不知道为啥

A)friendMyClassoperator*(double,double);

B)friendMyClassoperator*(double,MyClass);

C)friendMyClassoperator*(MyClass,double);

D)friendMyClassoperator*(MyClass,MyClass);

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

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

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

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

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

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

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

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

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

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

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

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

错填或不填均无分。

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

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

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

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

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

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

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

#include

usingnamespacestd;

classA

{

public:

A(){cout<<"A()"<

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

};

intmain()

{

Aa,*p=newA;

deletep;

cout<<"end"<

return0;

}

上面程序的输出结果为:

//自己再做一次

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

#include

usingnamespacestd;

classArray

{

private:

int*elem;

intsize;

public:

Array(inta[],intsz):

elem(a),size(sz){}

intGetSize()const{returnsize;}

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

};

intmain()

{

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

Arrayar(a,5);

ar[1]=8;

for(inti=1;i<=ar.GetSize();i++)

cout<

cout<

return0;

}

上面程序的输出结果为:

82345

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

#include

usingnamespacestd;

classA

{

public:

virtualvoidShow()const{cout<<"A"<

};

classB:

publicA

{

public:

voidShow()const{cout<<"B"<

};

voidFun1(Aobj){obj.Show();}

voidFun2(constA&obj){obj.Show();}

intmain()

{

Bb;

Fun1(b);

Fun2(b);

A*p=newB;

p->A:

:

Show();

p->Show();

return0;

}

上面程序的输出结果为:

卧槽我已经乱了

A

B

A

B//尼玛为啥

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

#include

usingnamespacestd;

template

ElemTypef(ElemTypex)

{

returnx*(ElemType)5.1;

}

template

voidf(ElemTypex,ElemTypey)

{

x=x*1.1;

y=y*1.1;

cout<

cout<

}

intmain()

{

cout<

f(1,2);

f(1.0,2.0);

return0;

}

上面程序的输出结果为:

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

#include

usingnamespacestd;

classA

{

private:

inta;

public:

A(intm=1):

a(m){}

voidShow(){cout<

voidShow()const{cout<

};

intmain()

{

Aa,b(8);

a.Show();

b.Show();

constAc,d(8);

c.Show();

d.Show();

return0;

}

上面程序的输出结果为:

1

8

6

13//嗯(⊙_⊙)为毛

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

#include

usingnamespacestd;

classTest

{

private:

staticintn;

public:

Test(){n+=6;}

~Test(){n-=8;}

staticintGetNum(){returnn;}

};

intTest:

:

n=2;

intmain()

{

cout<

:

GetNum()<

Test*p=newTest;

cout<

:

GetNum()<

deletep;

cout<

:

GetNum()<

cout<<"end"<

return0;

}

上面程序的输出结果为:

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

1.请完成下面的程序

#include

usingnamespacestd;

classTest

{

private:

staticintcount;//对象数//耶猜对了

public:

Test(){count++;}

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

"<

};

intTest:

:

count=0;

intmain()

{

Testobj1,obj2,obj3;

Test:

:

Show();

return0;

}

2.请完成下面的程序

#include

usingnamespacestd;

classInteger

{

private:

inta;

public:

Integer(intx=0){a=x;}

operatorint(){returna;}

Integeroperator+(constInteger&i)const

{

returna+i.a;//返回和

}

};

intmain()

{

Integera

(2),b(3),c;

c=a+b;

cout<

return0;

}

3.请完成下面的程序

#include

usingnamespacestd;

template

classA

{

private:

ElemTypea;

public:

A(ElemTypex):

a(x){}

voidShow()const{cout<

};

intmain()

{

Aobj("Hello,world!

");

obj.Show();

return0;

}

4.下列程序的输出结果为“B”,试将程序补充完整。

#include

usingnamespacestd;

classA

{

public:

virtualvoidShow()const{cout<<"A"<

};

classB:

publicA

{

public:

voidShow()const{cout<<"B"<

};

intmain()

{

A*p=newB;

p->Show();

deletep;

return0;

}

//回去试试

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

1.试使用函数模板实现求一个数组各元素的平均值,要求编写测试程序。

函数模板声明如下:

template

TAverage(Ta[],intn)//求数组a各元素之平均值

2.定义Person(人)类,由Person分别派生出Teacher(教师)类和Cadre(干部)类,再由Teacher(教师)类和Cadre(干部)类采用多重继承方式派生出新类TeacherCadre(教师兼干部)类,各类之间的继承关系如下图所示。

要求:

(1)在Person类中包含的数据成员有姓名(name)、年龄(age)、性别(sex)。

在Teacher类还包含数据成员职称(title),在Cadre类中还包含数据成员职务(post),在TeacherCadre类中还包含数据成员工资(wages)。

(2)在类体中定义成员函数。

(3)每个类都有构造函数与显示信息函数(Show)。

C++面向对象程序设计模拟试题三参考答安全

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

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

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

6.A)7.C)8.C)9.C)10.A)

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

错填或不填均无分。

1.参考答案:

intfun()=0;

2.参考答案:

static

3.参考答案:

CTest

4.参考答案:

构造函数

5.参考答案:

private或私有

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

1.参考答案:

A()

A()

~A()

end

~A()

2.参考答案:

82345

3.参考答案:

A

B

A

B

4.参考答案:

15

1

2

1.1

2.2

5.参考答案:

1

8

6

13

6.参考答案:

2

8

0

end

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

1.参考答案:

[1]static

2.参考答案:

[2]a+i.a或this->a+i.a

3.参考答案:

[3]char*

4.参考答案:

[4]virtual

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

1.参考程序:

#include

usingnamespacestd;

template

TAverage(Ta[],intn)

{

Ts=0;

for(inti=0;i

s=s+a[i];

returns/n;

}

intmain()

{

doublea[]={11.8,2,3,4,5.5,6.8,7,8,9};

cout<

return0;

}

2.参考程序:

#include

usingnamespacestd;

classPerson

{

protected:

charname[18];

intage;

charsex[3];

public:

Person(charnm[],intag,charsx[])

{

strcpy(name,nm);

age=ag;

strcpy(sex,sx);

}

voidShow()const

{

cout<<"姓名:

"<

cout<<"年龄:

"<

cout<<"性别:

"<

}

};

classTeacher:

virtualpublicPerson

{

protected:

chartitle[18];

public:

Teacher(charnm[],intag,charsx[],chartl[]):

Person(nm,ag,sx)

{strcpy(title,tl);}

voidShow()const

{

Person:

:

Show();

cout<<"职称:

"<

cout<

}

};

classCadre:

virtualpublicPerson

{

protected:

charpost[18];

public:

Cadre(charnm[],intag,charsx[],charpt[]):

Person(nm,ag,sx)

{strcpy(post,pt);}

voidShow()const

{

Person:

:

Show();

cout<<"职务:

"<

cout<

}

};

classTeacherCadre:

publicTeacher,publicCadre

{

protected:

doublewages;

public:

TeacherCadre(charnm[],intag,charsx[],chartl[],charpt[],doublewg)

:

Person(nm,ag,sx),Teacher(nm,ag,sx,tl),Cadre(nm,ag,sx,pt)

{wages=wg;}

voidShow()const

{

Person:

:

Show();

cout<<"职称:

"<

cout<<"职务:

"<

cout<<"工资:

"<

cout<

}

};

intmain()

{

TeacherobjTeacher("文冠杰",48,"男","教授");

CadreobjCadre("周杰",56,"男","院长");

TeacherCadreobjTeacherCadre("李靖",50,"女","教授","院长",6890);

objTeacher.Show();

objCadre.Show();

objTeacherCadre.Show();

return0;

}

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

当前位置:首页 > 解决方案 > 学习计划

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

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