C++复习题.docx

上传人:b****3 文档编号:11613294 上传时间:2023-06-01 格式:DOCX 页数:18 大小:87.08KB
下载 相关 举报
C++复习题.docx_第1页
第1页 / 共18页
C++复习题.docx_第2页
第2页 / 共18页
C++复习题.docx_第3页
第3页 / 共18页
C++复习题.docx_第4页
第4页 / 共18页
C++复习题.docx_第5页
第5页 / 共18页
C++复习题.docx_第6页
第6页 / 共18页
C++复习题.docx_第7页
第7页 / 共18页
C++复习题.docx_第8页
第8页 / 共18页
C++复习题.docx_第9页
第9页 / 共18页
C++复习题.docx_第10页
第10页 / 共18页
C++复习题.docx_第11页
第11页 / 共18页
C++复习题.docx_第12页
第12页 / 共18页
C++复习题.docx_第13页
第13页 / 共18页
C++复习题.docx_第14页
第14页 / 共18页
C++复习题.docx_第15页
第15页 / 共18页
C++复习题.docx_第16页
第16页 / 共18页
C++复习题.docx_第17页
第17页 / 共18页
C++复习题.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++复习题.docx

《C++复习题.docx》由会员分享,可在线阅读,更多相关《C++复习题.docx(18页珍藏版)》请在冰点文库上搜索。

C++复习题.docx

C++复习题

 

复习题

考试题型(A卷):

选择(单选)、填空、简答、程序分析、程序编写

1.C++代码源文件的扩展名应为()

A.cB.cppC.objD.exe

2.设同时有函数声明:

charfun(inta);floatfun(char*p);intfun(int&b);则以下函数调用语句正确的是()

A.fun(5)B.intb;fun(&b);C.char*p;fun(p);D.inta;fun(a)

3.标准输入流对象cin无法读取()

A.数值B.字符串C.空白字符D.字符

4.以下不属于C++关键字的是()

A.mutableB.classC.FriendD.virtual

5.通过()方法可以在现有类基础上得到新的类。

A.继承B.引用C.包含D.封装

6.成员函数亦可声明为静态的,但是它不能直接访问类的()数据成员

A.私有B.静态C.常量D.非静态

7.若类B的定义中私有数据成员i为常数据成员,则()

A.数据成员i不能被一般的成员函数所访问

B.数据成员i的初始化可以在构造函数的函数体中实现

C.数据成员i可以被常成员函数访问和赋值

D.以上均不对

8.在编译时,将所调用的函数代码嵌入到主调函数中,这种嵌入到主调函数中的函数不能称为()

A.内置函数B.内联函数C.内嵌函数D.嵌套函数

9.存储以下数据,占用存储字节最多的是()

A.NULLB.'0'C."0"D.0.0

10.面向对象的程序是()两者的组合

A.

算法和数据结构

B.对象和函数

C.

函数和算法

D.对象和消息

11.如果调用带有默认参数的函数时缺少一个参数,则()参数就作为这一参数

A.第1个B.中间1个C.最后一个D.系统随机选择

12.假定A为一个类,则执行Aa,b[2],*p=&a,c(*p);语句后,程序将要结束时,共调

用该类析构函数的次数应为()

A.2B.3

13.已知f1和f2是同一类的两个成员函数,但

C.4

f1不能直接调用

D.5

f2,这说明(

A.f1和f2都是静态函数B.f1是静态函数,f2不是静态函数

C.f1不是静态函数,f2是静态函数D.f1和f2都不是静态函数

14.下列关于函数模板与类模板的描述中,不正确的是()

A.函数模板的实例化是由编译程序在处理函数调用时自动完成

B.类模板的实例化必须由程序员在程序中显式的指定

C.函数模板与类模板均可以显式调用

D.定义函数模板时可以使用多个类型参数,而类模板不可以

15.对于语句cout>>a;,下列描述中不正确的是()

A.“cout”是一个输出流对象B.该语句错误使用了运算符

 

C.“>>”称作插入运算符D.该语句需要头文件iostream

16.下面运算符中,不能被重载的运算符是()

A.<=B.-C.?

:

D.[]

17.以下不属于面向对象的程序设计语言的是()

A.C#B.C++C.JavaD.C

18.下列关于C++中运算符重载的描述中,错误的是()

A.运算符重载是对已有的运算符赋予多重含义

B.重载的运算符,其运算对象可以是自定义的数据类型

C.编译系统对重载运算符的选择,遵循函数模板的选择原则

D.运算符的重载实质上是函数的重载

19.假定p所指对象的值为5,p+1所指对象的值为8,则执行“(*p)++;”语句后,p

所指对象的值为()

A.6B.9C.5D.8

20.运算符重载时不需要保持的性质是()

A.操作数个数B.操作数类型C.优先级D.结合性

21.已有定义:

char*str="abcd";则下面语句正确的是()

A.str[0]="a";B.str[1]='b';C.charc=str[0];D.*str="xyzw";

22.已知:

intk=6;则下列语句中能正确表示引用的是()

A.intx=k;B.int&x=k;C.int&x=6;D.int&x=&k;

23.下列虚基类的声明中,正确的是()

A.classB:

virtualpublicAB.classvirtualB:

publicA

C.virtualclassB:

publicAD.classB:

publicAvirtual

24.已有定义virtualintarea()=0;下面关于该函数的解释中正确的是()

A.该函数是纯虚函数B.该函数返回值为0

C.该函数通常在派生函数中声明D.该函数的入口地址为0

25.作为类的成员函数重载一个运算符时,如果参数表为空,通常情况下,说明该运算符有()个操作数

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

26.下面关于cin.eof()的说明中,不正确的是()

A.结束输入B.cin的成员函数

C.检测流状态是否结束D.与EOF有关

27.重载函数在或上不同,但函数名称相同。

28.若要把变量s定义为短整型变量k的引用,则所使用的定义语为。

29.已有定义constinta=5;则要定义一个常指针指向该变量a的语句是:

30.常对象中的数据成员必须通过函数才可以访问。

31.对象将其大部分实现细节隐藏起来,这种机制称为。

32.C++中,专门用于定义重载运算符的关键字是。

33.用于存贮当前被调用的成员函数所在对象的起始地址的指针是

34.如果希望类的成员为该类所有对象所共享,可以使用关键字

来修饰。

35.

在C++中,由继承而产生的新类,它的对象对同一个消息会作出不同的响应,这种特性被称为。

36.已有类A的定义,其中有成员函数intget_a(){returna;}则定义一个指针指向该函数的写法为。

37.假定类A中没有构造函数,则系统默认的构造函数形式是。

 

38.

多重继承消除二义性的通用性方法有和。

39.classw{staticchara;

chary[2];intx;

doublefun(inta){x=a;return0;}

};则sizeof(w)的值为。

40.从系统实现角度看,C++中的动态多态性是通过

来实现的。

41.语句cout<

42.在C++中,用户管理文件的I/O操作需要头文件<

>。

43.在C++中,用于动态分配内存的运算符是

44.在类的定义中,通常用函数为对象分配内存空间,并可对类的数据成员进行初始化。

45.在C++中,继承间接共同基类时只保留一份成员的方法是。

46.现有如下定义:

intx='B'+2;chary=x>='9'?

'C':

'S';则y是''。

47.假设类X的对象x是类Y的成员对象,则“YObj;”语句执行时,先调用类

的构造函数,再调用类的构造函数;而在程序结束析构时,先调用类

的析构函数,再调用类的析构函数。

48.对象的概念中,有静态和动态两种特征,其中静态特征称为,可由数据表示,而动态特征称为行为,可由表示。

49.继承关系可以是public、和private。

50.常数据成员只能通过构造函数的初始化表初始化。

51.类所占空间为数据成员和成员函数所占空间之和。

52.char*str="abcd";执行str[0]='s';语句后,字符串变为"sbcd"。

53.类的析构函数在删除对象时调用,并可以重载。

54.构造函数不能声明为虚函数,而析构函数可以声明为虚函数。

55.用来存放对象地址的指针变量,可称为指向对象的指针。

56.字符串"CDU"的长度是3,因此占用了3个字节的内存空间。

57.多重继承出现的二义性可以用作用域限定的方法消除。

58.<<运算符可以被重载,且可以提升优先级。

59.无论何种继承形式,派生类均不能直接访问基类的私有成员。

60.C++中,定义类的关键字是public。

61.抽象类定义的目的是用它作为基类去建立派生类。

62.常对象中的数据成员就是常数据成员。

63.对象基本特点有耦合性、多态性、继承性和封装性。

64.对象的赋值和复制是同一个含义,均是由对象1得到对象2。

65.构造函数有返回值,而析构函数没有返回值。

66.类定义的公用数据成员x,在类外可以直接赋值,如x=5;

67.若想输出时,数据靠右,并指定字段宽度为6,可用控制符setw(6)。

68.不出现类名,也可以直接定义对象。

69.下面程序中有一处错误,请用下划横线标出错误所在行并说明出错原因。

floata(intx,inty)

{floatz;z=x+y;returnz;}inta(floatx,floaty)

{intz;z=x-y;returnz;}

intmain()

{

inti=3;floatj=3.5;cout<

cout<

}

出错原因:

70.阅读程序,在横线处填上适当字句。

#include#includeusingnamespacestd;

//声明一个类模板,虚拟类型名为type

classA{

typex,y;

public:

A(typea,typeb){x=a;y=b;}typecmp(){return(x+y);}

};

intmain(){

Acp1(6.6,3.6);

Acp2("12","34");

cout<

}

输出结果为:

71.请在下划横线处填写程序的输出结果。

classPoint{intx,y;public:

Point(intx1=5,inty1=6){x=x1;y=y1;}

~Point(){cout<

{

Pointa;Pointb(8,8);

}

输出结果为:

72.阅读程序,在下划横线处填写适当字句。

classA{chara;

shortb;public:

voidout(){a=20;b=40;char*p;p=&a;

cout<<"a="<<(short)(*p++)<<'\t'<<"b="<<<

}

};

75.阅读程序,在下划横线处填写适当字句。

classA{

protected:

inta;public:

A(){a=1;}

};

classB1:

publicA{public:

B1(){}

};

classB2:

publicA{public:

B2(){}

};

 

classC:

//C类由直接基类B1和B2公有派生

{

public:

Derived(){}

voidInit(intb){

}

 

;//b赋给基类B1的a成员

};

 

76.下面程序中有一处错误,请用下横线标出错误所在行并说明出错原因。

classbase{public:

intx;

};

classOne:

publicbase{};classTwo:

publicbase{};

classOT:

publicOne,publicTwo{public:

intfunc();

};

voidmain(){OTp;

p.base:

:

x;

}

 

77.C++语言中,构造一个派生类需要做哪些工作?

78.假定有一个类,名称为A,有1个字符型的数据成员c和1个整形数据成员x。

请写出该类的至少2个不同的构造函数形式。

79.分别用new和malloc()分配一个有5个元素的整形数组,名称为a。

80.完成一个求圆面积的小程序,要求如下:

①定义一个基类:

点类(Dot),包括x坐标和y坐标(公有或保护),从它派生一个圆类(Circle),增加私有数据成员r(半径);

②圆类的函数成员包括构造函数、输入圆心坐标及圆半径的函数(input)、计算并返回面积的函数(area);

③主函数中生成一个圆类对象crc,通过构造函数或input函数为数据成员赋值,圆

心坐标为(6,6),半径为5。

使用对象crc的函数成员area计算面积,主函数输出结果。

81.编写类的定义,完成如下要求:

①定义一个People类,它的数据成员有年龄、姓名和性别;(字符串使用字符数组形式)

②以People类为基类,从中派生出学生类Student;

③在Student类中,新增一个数据成员为高数成绩;

④所有数据成员的输入由Student类构造函数实现;

⑤Student类有一成员函数为输出函数,用于输出所有数据成员;

⑥主函数用自己的信息定义一个学生对象,并输出该信息。

 

1、下列属于标准输出流对象的是()

A.cinB.printfC.cerrD.out

2、设有语句charstr[20];cin>>str;cout<

若从键盘输入helloChengDu!

,则输出结果为()

A.helloChengDu!

B.helloChengDu!

C.helloD.helloChengDu

3、以下输出语句中,不能实现换行功能的是()

A.cout<

4、请将下述代码填写完整,使得输出结果为

100.0

3.142

20.556,即最多保留3位小数,上下行小数点对齐。

floata=100,b=3.14159,c=20.556;

cout<<?

<

)<

<

<

)<

<

)<

1、程序的循环结构有几种?

2、下面函数中默认参数的定义哪些是对的?

voida(intx=0,inty=1,intz=2);

voida(intx,inty=1,intz=2);voida(intx=0,inty,intz=2);voida(intx=0,inty=1,intz);

 

3、已知有intf1(inta),f2(int*p),f3(int&b);//函数声明

在主函数调用这些子函数时,实参分别是什么形式?

已知主函数有定义

intx=5,*y=&x;

 

4、若有inti;int&j=i;i=5;j=++++i-j;则i=;j=。

若是j=i++++-j;

5、设有数组定义chararray[]=”C++程序设计”;,则数组array所占的空间为多少字节。

 

6、下面的代码段有什么问题?

如何解决?

voidtest(char*str1)

{

charstring[10];if(strlen(str1)<=10){strcpy(string,str1);

}

}

1、程序的循环结构有几种?

2、下面函数中默认参数的定义哪些是对的?

voida(intx=0,inty=1,intz=2);

voida(intx,inty=1,intz=2);voida(intx=0,inty,intz=2);voida(intx=0,inty=1,intz);

 

3、已知有intf1(inta),f2(int*p),f3(int&b);//函数声明

在主函数调用这些子函数时,实参分别是什么形式?

已知主函数有定义

intx=5,*y=&x;

 

4、若有inti;int&j=i;i=5;j=++++i-j;则i=;j=。

若是j=i++++-j;

5、设有数组定义chararray[]=”C++程序设计”;,则数组array所占的空间为多少字节。

6、下面的代码段有什么问题?

如何解决?

voidtest(char*str1)

{

charstring[10];if(strlen(str1)<=10){strcpy(string,str1);

}

}

1、下列语句中,能实现字符串复制的语句是()

A.stringstr1="hello",str2="world!

";str1=str2;

B.char*str1="hello",*str2="world!

";strcpy(str1,str2);

C.charstr1[]="hello",str2[]="world!

";strcpy(str1,str2);

D.char*str1=newchar[10],*str2="HelloWorld!

";strcpy(str1,str2);

 

2、假定A为一个类,a为该类私有的数据成员,Get()为该类公有的函数成员,它返回a的值。

 

现有如下语句At;,则得到t对象中数据成员a的语句为()

A.t.Get();B.t->Get();C.t.a;D.t->a;

 

3、阅读程序,在对应序号处填上适当字句。

#include

usingnamespacestd;classA{

chara;

shortb;public:

voidout(){a=20;b=40;char*p;p=&a;

cout<<"a="<<(short)(*p++)<<'\t'<<"b="<<

(1)<

}

};

intmain()

{

Atest;test.out();

cout<<"thesizeoftestis:

"<<

(2)<

}

输出结果为:

a=20b=40

thesizeoftestis:

(3)

 

(1)//使用指针

(2)

(3)

 

4、简要阐述结构体与类的异同。

答:

 

1、下面关于友元的说法,不正确的是()

A.友元函数可以是成员函数B.友元类的函数均是友元函数

C.友元不具备传递性D.友元的关系是双向的

 

2、下列关于函数模板与类模板的描述中,不正确的是()

A.函数模板的实例化是由编译程序在处理函数调用时自动完成

B.类模板的实例化必须由程序员在程序中显式的指定

C.函数模板与类模板均可以显式调用

D.定义函数模板时可以使用多个类型参数,而类模板不可以

 

3、阅读程序,在对应序号处填上适当字句。

#include

usingnamespacestd;classStu{

inti;public:

Stu(intj){i=j;}

(1)//函数fun()的声明

}test(111.1);

 

intfun(

(2)){returnx.i;}//函数fun()的定义

intmain(){

cout<<(3)<

return0;

}

输出结果为:

(4)

(1)friendintfun(constStu&);

(2)constStu&x

(3)fun(test);

(4)111

 

4、判断

(1)对象的赋值和复制是同一个含义,均是由对象1得到对象2。

(2)类A是类B的友元,而类B又是类C的友元,则类A也是类C的友元。

(3)静态成员函数可以有返回值,但是一定不能有this指针。

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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