c++经典习题附答案.docx

上传人:b****6 文档编号:7387373 上传时间:2023-05-11 格式:DOCX 页数:36 大小:28.87KB
下载 相关 举报
c++经典习题附答案.docx_第1页
第1页 / 共36页
c++经典习题附答案.docx_第2页
第2页 / 共36页
c++经典习题附答案.docx_第3页
第3页 / 共36页
c++经典习题附答案.docx_第4页
第4页 / 共36页
c++经典习题附答案.docx_第5页
第5页 / 共36页
c++经典习题附答案.docx_第6页
第6页 / 共36页
c++经典习题附答案.docx_第7页
第7页 / 共36页
c++经典习题附答案.docx_第8页
第8页 / 共36页
c++经典习题附答案.docx_第9页
第9页 / 共36页
c++经典习题附答案.docx_第10页
第10页 / 共36页
c++经典习题附答案.docx_第11页
第11页 / 共36页
c++经典习题附答案.docx_第12页
第12页 / 共36页
c++经典习题附答案.docx_第13页
第13页 / 共36页
c++经典习题附答案.docx_第14页
第14页 / 共36页
c++经典习题附答案.docx_第15页
第15页 / 共36页
c++经典习题附答案.docx_第16页
第16页 / 共36页
c++经典习题附答案.docx_第17页
第17页 / 共36页
c++经典习题附答案.docx_第18页
第18页 / 共36页
c++经典习题附答案.docx_第19页
第19页 / 共36页
c++经典习题附答案.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c++经典习题附答案.docx

《c++经典习题附答案.docx》由会员分享,可在线阅读,更多相关《c++经典习题附答案.docx(36页珍藏版)》请在冰点文库上搜索。

c++经典习题附答案.docx

c++经典习题附答案

1.关于C++语言,下列说法不正确的是

A.C++具有简洁、高效和接近汇编语言的特点

B.C++本身几乎没有支持代码重用的语言结构

C.C++语言不是一种纯面向对象的语言

D.C++支持面向对象的程序设计,这是它对C的重要改进

B

2.使用关键字________说明的函数为内联函数。

inline

3.C++支持两钟多态性,即________和________。

编译时的多态性运行时的多态性

4.在下面横线处填上适当字句,使程序输出结果为5,10

#include

voidmain(){________intn=5;

int&________=n;

ref=ref+5;

cout<

constref

5.constint*p;表明

A.p本身是常量

B.p指向一个固定的int类型的地址,而p的内容可以修改

C.p只能指向一个整型常量

D.p只能指向一个被const修饰的int类型的常量

C

6.数据封装给数据提供了与外界联系的________,只有通过这些________,使用规范的方式,才能访问数据。

标准接口接口

7.在下面横线处填上适当字句,使程序完整。

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

________index(inti){returna[i];}

voidmain(){

index(3)=________;//将a[3]改为6

}

int&6

8.#include

voidmain(){int*p,i,j;

cin>>j;//输入4

p=newint[j];

if(!

p){cout<<”Allocationerror\n”;}

for(i=0;i

for(i=0;i

cout<

delete[]p;

}

输出为:

4(这是输入的数据)

0123

9.#include

voidcomp(constint&,int&);

intmain(){intn=6,t=10;

cout<<”n=”<

comp(n,t);

cout<<”n=”<

return0;

}

voidcomp(const&in1,int&in2){in2=in1*10+in2;}

输出为:

n=6,t=10

n=6,t=70

10.下列属于C++头文件约定使用的扩展名的是

i..cpp

ii..hpp

iii..c

iv..c++

B

11.C++提供了一种新的注释方式:

从“//”开始,直到________,都被计算机当做注释。

行尾

12.在C++中,多态性被直观地称为“________”。

一个名字,多个函数

13.#include

voidaddsub(int&,int&);

voidmain(){inta=10,b=15;

addsub(a,b);

cout<<”a=”<

}

voidaddsub(int&m,int&n)

{inttemp=m;

m=m*n;

n=temp-n;}

输出为:

a=150,b=-5

14.#include

voidmain(){inta[2][2]={{2,4},{6,8}};

int*pa[2];

pa[0]=a[0];

pa[1]=a[1];

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

for(j=0;j<2;j++,pa[i]++)

cout<<“a[”<

}

输出为:

a[0][0]=2

a[0][1]=4

a[1][0]=6

a[1][1]=8

15.#include

#include

main(){cout<

(2)<<21<

}

输出为:

21

*21

**21

16.C++有几种联编

i.1种

ii.2种

iii.3种

iv.4种

B

17.由于引用不是变量,所以不能说明引用的________,也不能说明数据类型为引用数组或是指向引用的指针。

引用

18.函数原型标识一个函数的________,同时也标识该函数参数的________和________。

返回类型个数类型

19.#include

voidf(){staticinti=15;

i++;

cout<<”i=”<

}

voidmain()

{for(intk=0;k<2;k++)

f();

}

输出为:

i=16

i=17

20.#include

#include

main(){cout<

cout<

cout<

cout<<100<<”aa”<

return0;

}

输出为:

14

12

xxxxxxx144aa

21.#include

intfun(intn1,intn2){returnn1*n2;}

floatfun(intf1,floatf2){returnf1*f2;}

voidmain(){inta=10;

intb=2.5;

floatc=2.55;

floatd=5.52;

cout<

cout<

}

输出为:

20

11.04

22.与标准错误输出设备相关联(缓冲方式)的,由C++流库预定义的流是________。

clog

23.C++的流类库预定义的,与标准输出设备相关联的流是

i.cin

ii.cout

iii.cerr

iv.clog

B

第三章习题及答案

9.缺省的析构函数的函数体是

A.不存在的

B.随机产生的

C.空的

D.无法确定的

C

10.以下说法中正确的是

A.一个类只能定义一个构造函数,但可以定义多个析构函数

B.一个类只能定义一个析构函数,但可以定义多个构造函数

C.构造函数与析构函数同名,只是名字前加了一个波浪号(~)

D.构造函数可以指定返回类型;而析构函数不能指定任何返回类型,即使是void类型也不可以

B

11.不能在C++中提供封装的关键字是

A.class

B.struct

C.type

D.union

C

12.由于数据隐藏的需要,静态数据成员通常被说明为

A.私有的

B.保护的

C.公有的

D.不可访问的

A

13.在类中说明的任何成员都不能用________、________和________关键字进行修饰。

externautoregist

14.构造函数是和________同名的函数,但要在后者的名字之前冠有一个________,以区别于前者。

析构函数波浪号~

15.用关键字static修饰的成员称为________。

静态成员

16.已知AA是一个类,则AA*a[2];声明了一个________数组。

类对象指针

17.拷贝初始化构造函数用对它所在类的________作为参数。

引用

18.指出下面程序段中的错误,并说明出错原因。

//str1.h

#include

#include

classstr{private:

char*string;

public:

str(char*s){string=newchar[strlen(s)+1];strcpy(string,s);}

~str(){cout<<”Delete…”<

voidprint(){cout<

#include“str1.h”

voidmain(){strs1=”student”;strs2=s1;

s1.print();s2.print();}

指针悬挂问题

24.指出下面程序段中的错误,并说明出错原因。

classLocation{

public:

voidinit(intinitX,intinitY);

private:

intX=1;

public:

intgetX();

private:

inty;

};

不能采用这种方式初始化

25.指出下面程序段中的错误,并说明出错原因。

classTest{

private:

intnum;

protected:

intp;

};

voidfun()

{Testm;

intx=m.p;}

类之外定义的函数不能访问类的保护成员

26.指出下面程序段中的错误,并改正。

classtest{intx;};

test*ptr=newtest[2];

deleteptr;

应为:

delete[]ptr;

27.在下面横线处填上适当字句,完成类的定义。

classT{public:

voidinit(intinitx)

{x=initx;}

intgetx(){________;}//取x值

private:

________;};

returnxintx

28.在下面横线处填上适当字句,完成类中成员函数的定义。

classABC{intn;floatf;

public:

ABC(int,float);

ABC(ABC&);

};

ABC:

:

ABC(________){n=num;f=f1;}

ABC:

:

ABC(ABC&t){n=________;f=t.f;}

intnum,floatf1t.n

29.#include

classA{public:

staticintx;

inty;};

intA:

:

x=15;

voidmain(){Aa;

cout<

:

x<

cout<

}

输出为:

15

15

30.classtest{private:

intnum;

public:

test();

intget(){returnnum;}

~test();

};

test:

:

test(){num=0;}

test:

:

~test(){cout<<”Destructorisactive”<

voidmain(){testt[2];

cout<<”Exitingmain”<

}

输出为:

Exitingmain

Destructorisactive

Destructorisactive

31.#include

classsalary{intx,y;

staticintn;

public:

salary(intb):

x(b){}

voidf(doublei){y=x*i;}

staticvoidg(intp){n=p;}

inth()const{return(x+y+n);}};

intsalary:

:

n=100;

voidmain(){salarys1(1000),s2(2000);

s1.f(0.2);s2.f(0.15);

salary:

:

g(400);

cout<<”s1=”<

输出为:

S1=1600,S2=2700

32.#include

classt{intx;floaty;

public:

t(intn){x=n;}

t(intn,floatf){x=n;y=f;}

intf(){returnx;}

floatg(){returny;}};

tone[2]={3,4};

ttwo[2]={t(3,5.5),t(7,8.8)};

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

cout<<“one[”<

cout<

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

cout<<“two[”<

输出为:

one[0]=3

one[1]=4

two[0]=(3,5.5)

two[1]=(7,8.8)

33.说明友元函数使用关键字

i.friend

ii.static

iii.const

iv.volatile

A

34.指向类X中类型为type的数据成员的指针的说明形式为

i.typeX:

:

*pointer

ii.X:

:

type*pointer

iii.Type*X:

:

pointer

iv.X:

:

*typepointer

A

35.有关类作用域,下列说法中不正确的是

i.说明类时使用的一对花括号形成所谓的类作用域

ii.类作用域不包含类中成员函数的作用域

iii.类作用域中说明的标识符只在类中可见

iv.在可能出现两义性的情况下,必须使用作用域限定符“:

B

36.形如X:

:

X(X&)的构造函数称为

i.拷贝函数

ii.复制函数

iii.初始化构造函数

iv.拷贝初始化构造函数

D

37.友元关系不具有________,即当说明类A是类B的友元时,类B不一定是类A的友元。

交换性

38.new和________一同起作用,delete与________一起工作。

构造函数析构函数

39.指出下列程序段中的错误,并改正。

classBb{private:

intn;floatf;

public:

Bb(intn1,floatf1){n=n1;f=f1;}

Bb(Bbb){n=b.n;f=b.f;}

};

应为:

Bb(Bb&b){n=b.n;f=b.f;}

40.指出下面程序段中的错误,并改正。

classtest{

public:

staticintx;};

inttest.x=10;

应为:

inttest:

:

x=10;

41.在下面横线处填上适当字句,完成类中成员函数的定义。

classA{private:

intx;floaty;

public:

A(intaa,floatb){x=________;//用aa初始化x

y=________;}//用b初始化y

};

aab

42.#include

classA{private:

inta,b;

public:

A(intm,intn){a=m;b=n;}

voidfun(){cout<

voidfun()const{cout<

”<

};

voidmain(){Aa(5,8);a.fun();

constAb(8,5);b.fun();

}

输出为:

5,8

8:

5

43.下列关于封装的说法中正确的是

i.在C++中,封装是借助于函数达到的

ii.封装不要求对象具备明确的功能

iii.在数据封装的情况下,用户可以直接操作数据

iv.封装是将一组数据和与这组数据有关的集合组装在一起,形成一个能动的实体

D

44.定义的内容允许被其它对象无限制地存取的是

i.private部分

ii.protected部分

iii.public部分

iv.以上都不对

C

45.析构函数不用于

i.在对象创建时执行一些清理任务

ii.在对象消失时执行一些清理任务

iii.释放由构造函数分配的内存

iv.在对象的生存期结束时被自动调用

A

46.静态成员函数

i.只能通过对象名(或指向对象的指针)访问该对象的静态成员

ii.只能通过对象名(或指向对象的指针)访问该对象的非静态成员

iii.可以被说明为虚函数

iv.有this指针

B

47.关于下面程序段,说法正确的是

classA{

private:

intn;

public:

A(A&);

};

A:

:

A(A&a){n=a.n;}

A.Aobj2(obj1);用对象obj1初始化具有相同类类型的对象obj2

B.Aobj2(obj1);用对象obj2初始化具有相同类类型的对象obj1

C.A(A&a)也可以不使用引用参数而仍然是复制初始化构造函数

D.A(A&a)不能访问对象的私有成员

A

48.已知A是一个类,则对于Ax=2;编译器将其解释为________。

Ax

(2)

49.结构是________的一种特例,其中成员在缺省情况下是________的。

类,公有

50.友元在________中说明,其名字的作用域在________。

类类外

51.指出下面程序段中的错误,并说明出错原因。

classA{public:

inta;

voidfa(void){}

voidfb(void){}

};

void(A:

:

*p)(void);

p=A:

:

fa;Ax,*px=newA;

(x.*p)();px->*p();

应为:

(px->*p)();

52.在下面横线处填上适当字句,使其输出结果为25,10。

#include

classLocation{intX,Y;

public:

________;

intGetX(){returnX;}

intGetY(){returnY;}}

voidLocation:

:

init(intk,intt)(X=k;Y=t;)

voidmain(){Locationa;

a.init(25,10);

________;}//输出对象a的数据成员X和Y的值。

voidinit(intk,intt)cout<

53.在下面横线处填上适当字句,使程序输出结果为:

x=10,y=5

x=5,y=10

Deletex=5,y=10

Deletex=10,y=5

#include

classtt{private:

intx,y;

public:

tt(inta,intb){x=a;y=b;

________;}

~tt(){________;}

};

voidmain(){ttarr[2]={tt(10,5),tt(5,10)};}

cout<<”x=”<

cout<<”Deletex=”<

54.#include

classConstFun{public:

constintf5(){return5;}

intobj(){return3;}

};

voidmain(){ConstFuna;

constinti=a.f5();

intx=obj();

cout<

constConstFunb;

intj=b.f5();

cout<

}

输出为:

53

5

55.运行下面的程序,写出当输入15,12时的结果

#include

classRectange{intwidth,length;

public:

Rectange(intx,inty){length=x;width=y;}

voidshow(){

cout<<”Thelengthis:

”<

cout<<”Thewidthis:

”<

cout<

”<

}

};

voidmain(){intm,n;

cout<<“Inputthelengthandthewidth!

”<

cin>>m;//输入15

cin>>n;//输入12

Rectangler(m,n);r.show();}

输出为:

Inputthelengthandwidth

1512(这是输入数据)

Thelengthis:

15

Thewidthis:

12

Theareais:

180

56.#include

classmyclass{intval;

public:

myclass(inti=0){val=I;}

myclass(myclass&cp);

voidset(inti);

voidprint();

~myclass();

};

myclass:

:

myclass(myclass&cp){val=cp.val;

cout<<”Hi.val=”<

voidmyclass:

:

set(inti){val=I;}

voidmyclass:

:

print(){cout<<”ThisPrintval=”<

myclass:

:

~myclass(){cout<<”Destructorforval=”<

myclassmyfun(myclassobj){obj.print();

obj.set(10);

returnobj;}

voidg

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2