c++模拟试题一.docx

上传人:b****8 文档编号:9710312 上传时间:2023-02-06 格式:DOCX 页数:16 大小:19.47KB
下载 相关 举报
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++模拟试题一

模拟试题一

一、单项选择题(本大题共10小题,每小题2分,共20分)

1.面向对象程序设计中的数据隐藏指的是()

A.输入数据必须输入保密口令

B.数据经过加密处理

C.对象内部数据和代码合并在一起

D.对象内部数据结构的不可访问性

2.在C++中,编写一个内联函数Fun,使用int类型的参数,求其平方并返回,返回值也为int类型,下列定义正确的是()

A.intFun(intx){returnx*x;}

B.inlineintFun(intx){returnx*x;}

C.intinlineFun(intx){returnx*x;}

D.intFun(intx){inlinereturnx*x;}

3.下面关于重载函数的叙述中正确的是()

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

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

C.重载函数必须有不同的形参列表

D.重载函数的函数名可以不同

4.若有定义"intx=17;",则语句"cout<

A.11B.0x11C.21D.021

5.下列关于析构函数的描述中正确的是()

A.析构函数可以重载

B.析构函数可以是虚函数

C.析构函数名与类名相同

D.析构函数的返回类型为void

6.下列关于纯虚函数的描述中,正确的是()

A.纯虚函数是一种特殊的虚函数,它是个空函数

B.具有纯虚函数的类称为虚基类

C.一个基类中说明有纯虚函数,其派生类一定要实现该纯虚函数

D.具有纯虚函数的类不能创建类对象

7.下列关于运算符重载的描述中,正确的是()

A.可以改变运算符的目数

B.可以改变运算符的优先级

C.可以改变运算符的结合性

D.可以改变运算符的功能

8.要将类A说明是类B的虚基类,正确的描述是()

A.classvirtualB:

publicA

B.classB:

virtualpublicA

C.virtualclassB:

publicA

D.classB:

publicAvirtual

9.下面关于静态成员的描述中,正确的是()

A.静态数据成员是类的所有对象共享的数据

B.类的每个对象都有自己的静态数据成员

C.类的不同对象有不同的静态数据成员值

D.静态数据成员不能通过类的对象访问

10.假设Sample是个类,则语句"Samplea[2],*p[3];"调用构造函数的次数为()

A.0B.2C.3D.5

二,填空题(本大题共10小题,每小题2分,共20分)

11.在面向对象的程序设计中,将一组对象的共同特性抽象出来形成___类______.

12.在C++中要创建一个文件输入流对象fin,同时该对象打开文件"Test.txt"用于输入,则正确的声明语句是.__________________答案:

ifstreamfin(“test.txt”,ios:

:

in);

13.如果要把类B的成员函数voidfun()说明为类A的友元函数,则应在类A中加入语句________________.答案:

friendvoidB:

:

fun();

14.是一个类,已有语句A"A*p;p=newA[10].;"要释放由p指向的动态空间,正确的语句应该是_________________.答案:

delete[]p;

15.如果一个引用不是用作函数参数或返回值,则在说明该引用时必须对它进行______________.答案:

赋初值

16.如果要把PI声明为值为3.14159类型为双精度实数的符号常量,该声明语句是______________.答案:

constdoublePI=3.14159;

17.在C++中函数原型不但要标识一个函数的返回类型,同时还要标识该函数的_____________.答案:

形参的类型

18.类A的后置自增运算符++以成员函数的形式进行重载,其在类内的函数声明是______________.答案:

Aoperator++(A);

19.动态联编是通过基类类型的指针或引用调用_______________函数来完成.答案:

20.基类的保护成员通过私有派生其在派生类中的访问权限是_____________.private或者私有的

三,改错题(本大题共5小题,每小题2分,共10分)

21.下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见.

classSample{

private:

intdata;

Sample(){data=10;}

public:

Sample(intd){data=d;}

intoperatorint(){returndata;}//intoperator+(){returndata;}

};

22.下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见.#include

classPoint{

intX,Y;

public:

Point(){X=0;Y=0;}

Point(intx=0,inty=0){X=x;Y=y;}

voiddisplay(){cout<

};

23.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因.#include

template

voidSwap(T&a,T&b)

{Tt;

t=a,a=b,b=t;

}

voidmain()

{

inta=3,b=4;

charstr1[5]="abcd",str2[5]="hijk";

Swap(a,b);

Swap(str1,str2);//需要特定模板

cout<<"a="<

}

24.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因.#include

classBase{

public:

virtualvoidfun(){cout<<"Basefunction"<

};

classDerived:

publicBase

{public:

voidfun(){cout<<"Derivedfunction"<

voidmain()

{

Baseb;

Derived*p=&b;//不能把基类指针赋给派生类指针

b.fun();

p->fun();}

25.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因.#include

classA{

intx;

protected:

inty;

public:

A(intxx,intyy){x=xx;y=yy;}

};

classB:

publicA

{public:

B(inta,intb):

A(a,b){}

voiddisplay(){cout<

};

voidmain(){Bb(5,10);b.display();}

四,完成程序题(本大题共5小题,每小题4分,共20分)

26.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

2,14,3

#include

classA{

inta;

public:

A(inti=0){a=i;}

intGeta(){returna;}

};

classB{

Aa;

intb;

public:

B(inti=0,intj=0):

①a(j){b=i;}

voiddisplay(){cout<

voidmain()

{

Bb[2]={B(1,2),B(3,4)};

for(inti=0;i<2;i++)

②b[i].display();

}

27.下面程序中A是抽象类.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

B1calledB2called

#include

classA

{

public:

①virtualvoiddisplay()=0;

};

classB1:

publicA

{public:

voiddisplay(){cout<<"B1called"<

};

classB2:

publicA

{public:

voiddisplay(){cout<<"B2called"<

};

voidshow(②A*p){p->display();}

voidmain()

{

B1b1;

B2b2;

A*p[2]={&b1,&b2};

for(inti=0;i<2;i++)

show(p[i]);

}

28.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

Name:

王小明Grade:

90

#include

#include

classPerson

{

charname[20];

public:

Person(char*s){strcpy(name,s);}

voiddisplay(){cout<<"Name:

"<

};

classStudent:

publicPerson

{

intgrade;

public:

Student(char*s,intg):

①Person(s){grade=g;}

voiddisplay(){②display();cout<<"Grade:

"<

};

voidmain()

{

Students("王小明",90);

s.display();

}

29.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为5.

#include

classInteger

{intx;

public:

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

voiddisplay(){cout<

①intget(){returnx;}

};

IntegerMax(Integera,Integerb){if(②a.get()>b.get())returna;returnb;}

voidmain()

{

Integera(3),b(5),c;

c=Max(a,b);

c.display();

}

30.请在下面的横线处填上适当内容,以使类的定义完整.

classArray

{

int*ptr;

intsize;

public:

Array(){size=0;ptr=0;}

Array(intn){size=n;ptr=newint[size];}

Array(①Array&a)//复制初始化构造函数

{size=a.size;ptr=newint[size];for(inti=0;i

};

五,程序分析题(本大题共6小题,每小题5分,共30分)阅读下面的程序,写出程序运行的结果.

31.

#include

classTest

{private:

intnum;

public:

Test(intn=0){num=n;num++;}

~Test(){cout<<"Destructorisactive,number="<

};

voidmain(){Testx[2];cout<<"Exitingmain"<

Exitingmain

Destructorisactive,number=1

Destructorisactive,number==1

32.

#include

classA

{public:

virtualvoidfun(intdata){cout<<"classA:

"<

voidfun(char*str){cout<<"classA:

"<

};

classB:

publicA

{public:

voidfun(){cout<<"classB"<

voidfun(intdata){cout<<"classB:

"<

voidfun(char*str){cout<<"classB:

"<

};

voidmain()

{

A*pA;

Bb;

pA=&b;

pA->fun

(1);

pA->fun("Hello");

}

classB:

1

classA:

Hello

33.

#include

voidmain()

{

cout.fill('*');

cout.width(10);

cout<<"123.45"<

cout.width(8);

cout<<"123.45"<

cout.width(4);

cout<<"123.45"<

}

****123.45

**123.45

123.45

34.

#include

classNum{

intX,Y;

public:

Num(intx,inty=0){X=x;Y=y;}

voidvalue(intx,inty=0){X=x;Y=y;}

voidvalue()

{

cout<

if(Y!

=0)cout<<(Y>0?

'+':

'-')<<(Y>0?

Y:

-Y)<<'i';

cout<

}

};

voidmain()

{

Numn

(1);

n.value();

n.value(2,3);

n.value();

Numm(3,-4);

m.value();

}

1

2+3i

3-4i

35.

#include

classSample

{

private:

inti;

staticintcount;

public:

Sample();

voiddisplay();

};

Sample:

:

Sample(){i=0;count++;}

voidSample:

:

display(){cout<<"i="<

intSample:

:

count=0;

voidmain()

{

Samplea,b;

a.display();

b.display();

}

i=0,cout=2

i=0,cout=2

36.

#include

classA

{

inta;

public:

A(intaa=0){a=aa;cout<<"a="<

};

classB

{

intb;

public:

B(intbb=0){b=bb;cout<<"b="<

};

classC:

publicB

{

Aa;

public:

C(){cout<<"Cdefaultconstructor"<

C(inti,intj):

a(i),B(j){cout<<"Cconstructor"<

};

voidmain()

{

Cc1,c2(5,6);

}

b=0

a=0

Cdefaultconstructor

b=6

a=5

Cconstructor

 

参考答案

(一)

一,单项选择题(本大题共lO小题,每小题2分:

共20分)

1.D2.B3.C4.C5.B6.D7.D8.B9.A10.B

二,填空题(本大题共10小题,每小题2分,共20分)

11.类

12.ifstreamfin("Test.txt");

13.friendvoidB:

:

fun();

14.deletep;

15.赋初值

16.constdoublePI=3.14159;

17.形参的类型18.Aoperator++(A);

19.虚

20.私有的

三,改错题(本大题共5小题:

每小题2分,共lO分)说明:

各小题中,指出错误得l分,说明出错原因或改正正确得l分.

21.错误:

intoperatorint(){returndata;}修改:

intoperator+(){returndata;}

22.错误:

voiddisplay(){cout<

voiddisplay(){cout<

23.错误:

Swap(str1,str2);原因:

需要特定模板

24.错误:

Derived*p=&b;原因:

不能把基类指针赋给派生类指针

25.错误:

voiddisplay(){cout<

x是不可访问的

四,完成程序题(本大题共5小题,每小题4分,共20分)

26.①.a(j){b=i;②.b[i].display

27.①.virtualdisplay(){}②.A*p

28.①.Person(s)②.display()

29.①.intget(){returnx;}②.a.get>b.get()

30.①.Array&a②.ptr[i]=a.ptr[i]

五,程序分析题(本大题共6小题,每小题5分,共30分)

31.ExitingmainDestructorisactive,number=1Destructorisactive,number=1

32.classB:

1classA:

Hello

33.****123.45**123.45123.45

34.12+3i3-4i

35.i=0,count=2i=0,count=2

36.b=0a=0Cdefaultconstructorb=6a=5CconstructorCconstructor

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

当前位置:首页 > 求职职场 > 简历

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

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