CC++考试参考题库(200题)_第1页
CC++考试参考题库(200题)_第2页
CC++考试参考题库(200题)_第3页
CC++考试参考题库(200题)_第4页
CC++考试参考题库(200题)_第5页
已阅读5页,还剩67页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C/C++考试参考题库(200题)

一、单选题

1.主机字节序包含大端字节序和小端字节序两种的说法是否正确

A、正确

B、错误

答案:A

2.sizeof对数组,得到整个数组所占空间大小

A、正确

B、错误

答案:A

3.c++11中enumclass的作用是?

A、单纯的语法糖

B、限定作用域

答案:B

4.y>=12的情况下,表示关系12

A、(12

B、(12

C、(12

D、(12

答案:B

5.对于int*target[5]的描述,以下选项是正确的是()

A、target是一个具有5个元素的指针数组,每个元素是一个int类型的指针

B、target[5]表示某个数组的第5个元素的值

C、target是一个指向数组的指针,所指向的数组是5个int类型的元素

Dxtarget是一个指向某个数组中第5个元素的指针,该元素是int类型的变量。

答案:A

解析:int*target[n]是指针数组,口优先级高,先与target结合成为一个数组,

再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。int(*ta

rget)[n]是数组指针,()优先级高,首先说明target是一个指针,指向一个整

型的一维数组,这个一维数组的长度是n,也可以说是target的步长。

6.哪个指令可以查看git改动

A、gitlog

B、gitmit

C、gitadd

D、gitdiff

答案:D

7.对于下面的变量charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类

型为()

A、fIoat

B、char

C、int

D、double

答案:D

解析:double表达能力最高

8.在上下文及头文件均正常的情况下,若有以下定义和语句:charsl□二”12345

",*s2="1234";printf;"%d\n",strlen(strcpy(s1,s2)));则输出结果是

A、4

B、5

C、9

D、10

答案:A

解析:strcpy(s1,s2)这个函数是把s2字符串拷贝到s1这个字符串,同时也把

s2的、(T拷过去,所以覆盖了s1的所有字符(在空间足够的情况下,当然遇到

s1的空间不足以存放s2,另考虑),所以strcpy执行完后是“1234”strlen("

1234”)就是4了

9.doublea;if(a=0){]该写法是否正确

A、正确

B、错误

答案:B

10.下列描述中,()是错误的。

A、内联函数的主要解决程序的运行效率问题。

B、内联函数的定义或声明必须出现在内联函数第一次补调用之前。

C、内联函数中可以包括各种语句

D、对内联不可以进行异常接口声明

答案:C

C、I/O

答案:C

14.对于下面代码段intx=3,y=3;intt=++x||++y;y的值为()

A、不确定

B、4

C、3

D、1

答案:C

解析:当解析器遇到了I|时,只要前面的++x为真,后面的语句就不执行了

15.一般情况下,new的对象位于那块内存空间?

A、栈

B、堆

答案:B

16.若有如下程序:intmainO{inty=3,x=3,z=1;printf("%d%d\n",(++xry+-),z

+2);)运行该程序的输出结果是(

A、34

B、42

C、43

D、33

答案:D

解析:逗号表达的求值顺序是从左向右以此计算用逗号分隔的各表达式的值,最

后一个表达式的值就是整个逗号表达式的值,所以(++x,y++)的值将是y++,

因为是先输出y的值,再将y增1,所以轴线输出3,再输出Z+2的值,即3;

所以应选择D

17.在C++中,constinti=0;int*j=(int*)&i;*j=1;printf("%d,%d",i,*j)输出

是多少?

A、0,1

B、1,1

C、1,0

D、0,0

答案:A

解析:C语言中的const是运行时const,编译时只是定义,在运行才会初始化。

C语言中const变量不能用于成为数组长度等作为编译时常量的情况,原因就在

此。C语言const变量在运行时改变了是可以再次读出改变后的值的。C++中,c

onst变量是编译时的常量,可以向#define定义的常量一样使用。故C++中con

st变量的值在编释时就已经确定了,直接对cosnt变量进行了值的替换,因此

当const变量的值改变时,const的变量值是不会得到更新的。这几行代码在C

和C++中都会改变const变量的值,只不过C++中const变量在编译的时候已经

确定了,而C中的const变量可以在运行时改变后再次读取。

18.当宏定义需要定义多行代码时,会使用下列哪个符号()

A、I

B、/

C、\

D、-

答案:C

19.在下面存储类别中,。变量的可见性与生存期不一致。

A、外部

B、自动

C、内部静态

D、寄存器

答案:C

解析:如果一个变量在某个文件或函数范围内是有效的,则称该文件或函数为该

变量的作用域,在此作用域内可以引用该变量,所以又称变量在此作用域内“可

见”,这种性质又称为变量的“可见性”。如果一个变量值在某一时刻是存在的,

则认为这一时刻属于该变量的“生存期”,或称该变量在此时此刻“存在”。自

动变量和寄存器变量在函数内外的“可见性”和“存在性”是一致的,即离开函

数后,值不能被引用,值也不存在。静态外部变量和外部变量的可见性和存在性

也是一致的,在离开函数后变量值仍然存在,且可被引用。而静态局部变量的可

见性和存在性不一致,离开函数后,变量值存在,但不能被引用。

20.struct的默认的继承访问权限是?

A、pubIic

B、private

答案:A

21.for(intx=0,y=0;!x&&y<=5;y++)

语句执行循环的次数是多少次?

A、0

B、5

C、6

D、无数次

答案:C

解析:

如果循环体中X得值不改变,!x一直为true,则只需要考虑y的值就可以了,

一共6次。

22.主机字节序的说法错误的是?

A、主机字节序又叫CPU字节序

B、主机字节序由CPU指令集架构决定

C、主机字节序不是由操作系统决定的

D、主机字节序由操作系统决定的

答案:D

23.class的默认的继承访问权限是?

A、pubIic

B、private

答案:B

24.下列为纯虚函数的正确声明的是()

A、voidvirtuaIprint0=0;

B、virtuaIvoidprint;)=0;

CxvirtuaIvoidprint:)();

D、virtuaIvoidprint;)\;

答案:B

解析:纯虚函数的格式:virtual返回值类型函数名(参数列表):0;

25.设置虚基类的目的是()?

A、简化程序

B、消除二义性

C、提高运行效率

D、减少目标代码

答案:B

解析:虚基类是为了强调“这个类型的某些方法没有意义,只是为了继承,不要构

造这种类型的对象”尽管C++或其他00语言支持多重继承,但在实际软件开发中

多重继承用的并不多,原因在于多重继承过手复杂。

26.Iinux系统中查看网卡信息使用哪个指令?

A、ifconfig

Bxipconfig

答案:A

27.引用与指针有什么区别错误的是?

A、引用必须被初始化,指针不必

B、引用初始化以后不能被改变

C、指针只能读它所指向的对象,不可以改变所指的对象

D、不存在指向空值的引用,但是存在指向空值的指针

答案:C

28.在64环境下,int*p=newint[16]{},指针p存储的位置位于?

A、堆

B、栈

答案:B

29.下面有关回调函数的说法,错误的是?

A、回调函数一般是一个通过函数指针调用的函数

B、回调函数可能被系统API调用一次,也可能被循环调用多次

C、回调函数本身可以直接是全局函数、静态函数或某个特定类的成员函数

D、回调函数可用于通知机制

答案:C

解析:所谓的回调函数,就是预先在系统的对函数进行注册,让系统知道这个函

数的存在,以后,当某个事件发生时,再调用这个函数对事件进行响应。定义一

个类的成员函数时在该函数前加CALLBACK即将其定义为回调函数,函数的实现

和普通成员函数没有区别

30.map的底层数据结构是?

A、数组

B、链表

C、红黑树

D、哈希表

答案:C

31.函数参数传递使用值传递是否会触发拷贝?

A、是

B、否

答案:A

32.关于成员函数覆盖(重写)的说法错误的是

A、分别位于派生类与基类

B、函数名字相同

C、参数不同

D、基类函数必须有virtual关键字

答案:C

33.进程之间的通信方式不包括?

A、消息队列

B、共享内存

C、套接字(Socket)

D、锁

答案:D

34.关于成员函数重载的说法错误的是

A、相同的范围(在同一个类中)

B、函数名字相同,参数不同

C、返回值不同

D、virtuaI关键字可有可无

答案:C

35.#defineDOUBLE(x)x+x,i=5*D0UBLE(5);

i是多少?

A、25

B、30

C、50

D、15

答案:B

36.关于栈的数据结构的描述正确的是?

A、先进先出

B、先进后出

答案:B

37.执行以下语句,输出结果为()

#include<stdio.h>

intmain(){

char*p1="heIIo";

char*p2-"worId";

char*p3="apieceofcake";

char*str[]={p1,p2,p3};

printf("%c",*(str[0'+1));

)

A、worId

B、hello

C、编译时错误

D、其他选项都不正确

答案:D

38.static修饰的变量,在main函数运行前就分配了空间是否正确

A、正确

B、错误

答案:A

39.Iinux系统中,关于线程说法正确的是?

A、线程是资源分配的独立单位

B、线程是资源调度的独立单位

答案:B

40.多线程的说法错误的是?

A、充分利用多核,实现并发

B、不需要考虑资源的互斥,有操作系统保证

C、需要考虑资源的互斥

答案:B

41.以下代码编译有错误,哪个选项能解决编译错误?classA{public:intGetVa

Iue()const{vv=1;returnvv;}private:intvv;};

A、改变成员变量"vv"为"mutabIeintvv"

B、改变成员函数"GetValue"的声明,以使其不是const的

C、都不能修复编译错误

D、都可以修复编译错误

答案:D

解析:普通成员函数后面加上const修饰,就是常函数。常函数中的this指针

是常指针,不能在常函数中对成员变量进行修改,只能读取;如果想要在常函数

中对成员变量进行修改,可以在成员变量前加上mutable关键字进行修饰;常函

数可以被普通对象或者常对象调用,但是常对象只能调用常函数,常对象只能读

成员。

42.#includeufiIename.hv,编译器的搜索文件路径的描述正确的是?

A、编译器从用户的工作路径开始搜索

B、编译器从环境路径开始搜索

答案:A

43.以下程序运行后的输出结果是()intmainO{intp[7]={11,13,14,15,16:17,

18);inti=O,j=O;whiIe(i<7&&p[i]%2==1)j+=p[i++];printf("%d\n",j);}

A、23

B、24

C、25

D、26

答案:B

解析:i等于。时,p[0]为奇数,进入while循环,j累加了p[0]的值为11;i加

1为为奇数,进入whiIe循环,j累加了p[l]的值,为24i加一为2,而

P[2]为偶数,跳出whiIe循环,j为24

44.exterrTC”的作用错误的是

A、被exterrTC”修饰的变量和函数是按照C语言方式编译和链接的

B、避免C++因符号修饰导致代码不能和C语言库中的符号进行链接的问题。

C、无作用

答案:C

45.若有定义inta[3]⑸,i,j;(且OWi<3,OWj<5),则a[i]口]不正确的地址表

示是()。

A、&a[i][j]

B、a[i]+j

G*(a+i)+j

D、*(*(a+i)+j)

答案:D

解析:

求的是哪个地址表示是错的,只有选项D明显解引出来的数组元素,不是个地址,

结果答案选D。A,B,C,都是合法的地址表示方法。

46.有如下代码:structAI{virtuaI~A1(){)};structA2(virtuaI~A2(){)};struc

tB1:A1,A2{};intmain0{Bid;A1*pb1=&d;A2*pb2=dynamic_cast(pb1);//L1A2*p

b22=static_cast(pb1);//L2returnO;}说法正确的是0

A、L1语句编译失败,L2语句编译通过

B、L1语句编译通过,L2语句编译失败

C、L1,L2都编译失败

D、L1,L2都编译通过

答案:B

解析:dynamic_cast是运行时检查,虽然pb1是A1类型的,但是指向的实体却

是子类,所以子类转父类A2完全是可以的。但是static_cast比较“死脑筋”,

在编译期检查,这样是不检查指针指向的值的,于是发现Pb1是A1类型,A1想

转A2?报错!

47.静态函数是在什么时候确定的?

A、编译期

B、运行期

答案:A

48.有如下类的定义:intF1();staticintF2();classTestClass{pubIic:intF3();

staticintF4();};在所描述的函数中,具有隐含this指针的是哪个()

A、F1

B、F2

C、F3

D、F4

答案:C

解析:类中的非静态函数默认是有this指针的,表明为该类的对象所有,静态

函数不属于任何类的对象,没有this指针,由类直接调用

49.Iinux系统中,关于进程说法正确的是?

A、进程是资源分配的独立单位

B、进程是资源调度的独立单位

答案:A

50.设有程序段:intk二10;while(k=0)k=k-1;则下面描述中正确的是()

A、while循环执行10次

B、循环是无限循环

C、循环体语句一次也不执行

D、循环体语句执行一次

答案:C

解析:因while后面的表达式是默值表达式,其值为0(即为假),所以循环体

内的语句不可能执行。故正确答案是C。

51.假定n的值为5,则表达式n++的值为()?

A、6

B、5

C、4

D、7

答案:B

52.this指针是一个隐含于每一个非静态成员函数中的特殊指针,该说法是否正

A、正确

B、错误

答案:A

53.在64环境下,int*p=newint[16]{},指针p所指向的内容存储的位置位于?

A、堆

B、栈

答案:A

54.设已经有A,B,C,D4个类的定义,程序中A,B,C,D析构函数调用顺序为()?

Cc;intmain()(A*pa=newA();Bb;staticDd;deIetepa;}

A、ABCD

B、ABDC

C、ACDB

D、ACBD

答案:B

解析:这道题主要考察的知识点是:全局变量,静态局部变量,局部变量空间的

堆分配和栈分配其中全局变量和静态局部变量时从静态存储区中划分的空间,二

者的区别在于作用域的不同,全局变量作用域大于静态局部变量(只用于声明它

的函数中),而之所以是先释放D在释放C的原因是,程序中首先调用的是C

的构造函数,然后调用的是D的构造函数,析构函数的调用与构造函数的调用顺

序刚好相反。局部变量A是通过new从系统的堆空间中分配的,程序运行结束之

后,系统是不会自动回收分配给它的空间的,需要程序员手动调用delete来释

放。局部变量B对象的空间来自于系统的栈空间,在该方法执行结束就会由系统

自动通过调用析构方法将其空间释放。之所以是先A后B是因为,B是在函数执

行到结尾“}”的时候才调用析构函数,而语句deletea;位于函数结尾“}“之前。

55.关于构造函数的描述下列说法不正确的是()

A、构造函数可以被重载

B、构造函数不能被覆盖

C、一个构造函数可以返回一个私有的或一个对象的引用

D、构造函数代码执行顺序时是从最远的祖先类到当前的类层级

答案:C

56.下面程序的输出结果是()

#include<stdio.h>

intmain(){

inti,n=0;

floatx=1,y1=2.1/1.9,y2=1.9/2.1;

for(i=1;i<22;i++)

x=x*y1;

whiIe(x!=1.0)(

x=x*y2;n++;

)

printf("%d\n",n);

returnO;

)

A、21

B、22

C、程序无限循环

D、运行时崩溃

答案:C

解析:

浮点类型不能精确相等

57.哪个操作符不能作为类成员函数被重载?

A、?:

B、++

C、口

D、二二

答案:A

解析:不可重载运算符包括“?:这四个

58.在C++中,容器是一种()

A、标准类

B、标准对象

G标准函数

D、标准类模板

答案:D

59.以下代码是哪一句可能导致的编译错误?

复制代码

#incIude<iostream>

usingnamespacestd;

cIassTest

(

pubIic:

Test()lcout«"iIikezk";}

Test(int){cout«"iIikewangyi";}

voidexe()(cout«"thisismychoice";)

);

intmain()

(

Testa⑴;//1

a.exe();//2

Testb();//3

b.exe();//4

Teste;//5

c.exe();//6

returnO;

1

A、1

B、2

C、4

D、6

答案:C

解析:

//3b后面跟小括号,会引起歧义,误以为是一个函数,b无法正确构造。则〃4

无法正确调用exe(),编译错误

60.对于下面char(*p)[16]的声明描述正确的一项是()

A、p是长度为16的字符指针数组

B、p是包含16个字符的字符串

C、p是指向长度为16的字符数组的指针

D、p是长度为16的字符数组

答案:C

61.在结构化的程序设计中,模块划分的原则是()

A、各模块硬包括尽量多的功能

B、各模块的规划应尽量大

C、各模块之间的联系尽量紧密

D、模块内具有高内聚度,模块间具有低耦合度

答案:D

62.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指

向类A对象的指针,则p->A::func()将()?

A、调用类B中函数func()

B、即调用类A中函数,也调用类B中的函数

C、调用类A中函数func()

D、根据p所指的对象类型而确定调用类A中或类B中的函数func()

答案:C

解析:这边通过作用域解析运算符::明确指定了要访问的是A类中的func()。

63.inline内联函数的说法错误的是

A、相当于把内联函数里面的内容写在调用内联函数处

B、相当于不用执行进入函数的步骤,直接执行函数体

C、相当于宏,却比宏多了类型检查,真正具有函数特性

D、没用

答案:D

64.下列程序的输出结果是。

复制代码

#incIude<iostream>

usingnamespacestd;

intmain(void){

intx=1,i=1;

for(;x<50;i++){

if(x>=10)

break;

if(x%2!=0){

x+=3;

continue;

)

x-=-1;

)

cout«x«*'«i«end;

returnO;

}

A、127

B、116

C、126

D、117

答案:C

65.静态库的说法错误的是?

A、Iinux环境静态库后缀为.so

B、Iinux环境静态库后缀为.a

C、windows环境动态库后缀为.Iib

答案:A

66.用户双击鼠标时产生的消息序列,下面正确的是()

A、WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDOWN,WM_LBUTTONUP

B、WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONUP,WM_LBUTTONDBLCLK

C、WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDOWN,WM_LBUTTONDBLCLK

D、WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDBLCLK,WM_LBUTTONUP

答案:D

解析:双击即点击左键两下,第一次触发LBUTTONDOWN和LBUTTONUP,第二次点

击时触发双击事件LBUTTONDBLCLK(doubleclick),放掉再触发LBUTTONUP

67.vector随机读的时间复杂度是?

A、0(1)

B、0(n)

C、O(logN)

D、0(n2)

答案:A

68.不属于面向对象基本特征的是?

A、封装

B、继承

C、多态

D、过程

答案:D

69.定义一个非常大的数组可能造成的后果是?

A、系统自动优化,无任何影响

B、栈溢出,很有可能造成程序终止

答案:B

70.函数voidfoo(){staticintval;..}变量val的内存地址位于()

A、未初始化数据段

B、已初始化数据段

C、堆

D、栈

答案:A

解析:1、栈区(stack)一由编译器自动分配释放,存放函数的参数值,局部变

量的值等。2、堆区(heap)一一般由程序员分配释放,若程序员不释放,程序

结束时可能由os回收。注意它与数据结构中的堆是两回事,分配方式倒是类似

于链表。3、全局区(静态区)(static)一全局变量和静态变量的存储是放在

一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初

始化的静态变量在相邻的另一块区域。程序结束后有系统释放。4、文字常量区

一常量字符串就是放在这里的。程序结束后由系统释放。5、程序代码区一存放

函数体的二进制代码。

71.

如下代码:intarr[8]={1,6,3,3,8,0,7,4);int*p二arr;下面答案中不能够正确输

出全部偶数的是()

A、for(inti=0;i<8;i++)

if(arr[i]%2=0)

printf("%d",arr[i]):

B、for(inti=0;i<8;i++)

if(p[i]%2==0)

printf("%d"fp[i]);

C、inti=0;

whiIe(i<8){

if(*(p+i)%2=0)

printf("%d",*(p+i));

i++;

D、inti=0;

while(i<8){

if((arr+i)%2==0)

printf("%d",arr+i):

i++;

J

答案:D

72.以下哪个MSVC编译环境下的链接器

A、Id

B、Iink

答案:B

73.下面那个不属于编译器

A、gcc

B、msvc

C、clang

D、vscode

答案:D

74.在C++中,要实现动态联编,必须使用()调用虚函数。

A、类名

B、派生类指针

C、对象名

D、基类指针

答案:D

75.已知x:43,ch='A',y=O;则表达式(x>=y&&ch<B&&!y)的值是()

A、0

B、语法错

C、1

D、“假”

答案:C

解析:

x>二y是成立的,A的ASCII值是小于B的,!y=1所以答案是1

76.下面关于虚函数和函数重载的叙述不正确的是()

A、虚函数不是类的成员函数

B、虚函数实现了C++的多态性

C、函数重载允许非成员函数,而虚函数只针对于成员函数

D、函数重载的调用根据参数的个数、序列来确定,而虚函数依据对象确定

答案:A

解析:虚函数也是类的成员函数,A说法是不正确的;虚函数和函数重载都实现

了C+二的多态性,但表现形式不一样,函数重载调用根据参数个数、参数类型等

进行区分,而虚函数则是根据动态联编来确定调用什么,故BD说法正确函数重

载可以是类的成员函数也可以是非成员函数,比如:intfun(inta);intfun(inta.

intb);这就是非成员重载,虚函数必须是成员函数了,否则就失效了,所以C

77.UDP是可靠传输协议?

A、正确

B、错误

答案:B

78.函数参数传递使用引用传递是否会触发拷贝?

A、是

B、否

答案:B

79.如果定义:floata[10],x;则以下叙述中正确的是()

A、语句a=&x;是非法的

B、表达式a+1是非法的

C、三个表达式a[1]、*(a+1)、&a[1]代表的变量互不相同

D、表达式*&a[1]是非法的,应该写成*(&(a[1]))

答案:A

解析:B选项中,表达式a+1不是非法的;C选项中,*(a+1)即指a[1];D选项

中,不是非法的。因此A选项正确。

80.static的用途说法错误的是?

A、在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变

B、在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数

访问,但不能被模块外其它函数访问。它是一个本地的全局变量

C、在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那

就是,这个函数被限制在声明它的模块的本地范围内使用

D、static修饰的变量是线程安全的

答案:D

81.main函数执行以前,还会执行什么代码?

A、全局对象的构造函数

B、全局对象的析构函数

C、局部对象的构造函数

D、局部对象的析构函数

答案:A

解析:全局对象的构造函数会在main函数之前执行。

82.在下面的do-whiIe循环语句中,其循环体语句被执行的次数为()?inti二

0;do{i++;}whiIe(i<10)

A、8

B、9

C、10

D、11

答案:C

83.friend友元类的说法正确的是?

A、能访问私有成员

B\提高了坏封装性

答案:A

84.数据库的原子性的解释正确的是?

A、原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚

B、原子性是指事务包含的所有操作一定全部成功

答案:A

85.以下有关C语言的说法中,错误的是。。

A、内存泄露一般是指程序申请了一块内存,使用完后,没有及时将这块内存释

放,从而导致程序占用大量内存。

B、可以通过malloc(size_t)函数调用申请超过该机器物理内存大小的内存块。

C、无法通过内存释放函数千ree(void*)直接将某块已经使用完的物理内存直接

还给操作系统。

D、可以通过内存分配函数malloc(size_t)直接臼请物理内存。

答案:D

解析:内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在

使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。即所谓内存

泄漏。free释放的内存不一定直接还给操作系统,可能要到进程结束才释放。

可以直到malloc不能直接申请物理内存,它申请的是虚拟内存

86.已知inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a不能表示数组a中元素的式

子是。

A、*a

B、*p

C、a

D、a[p-a]

答案:C

87.在32位机器上,代码段的执行结果为()charx=65;floaty=7.3;inta=100;

doubIeb=4.5;printf("%d,%d,%d,%d\n'\sizeof(x),sizeof(y),sizeof(a),size

of(b));

Ax2,2,2,4

B、1,2,4,4

C、1,4,48

D、2,4,4,8

答案:C

88.使用new实例化一个类的对象的说法正确的是?

A、只调用malloc分配了内存

B、直接调用构造函数

C、先底层调用malloc分配了内存,然后调用构造函数

答案:C

89.当一个类A中没有声明任何成员变量与成员函数,sizeof(A)的值是多少?

A、0

B、1

C、4

答案:B

90.#include<iostrean>

usingnamespacestd;

voidf(int*print*q)

p++;

*q=*q+1;

)

intmain()(

intm=1,n=2,*r二&m;

f(r,&n);

cout«m«","«n;

returnO;

)

程序运行后的输出结果是()

A、2,3

B、1,4

C、1,3

D、1,2

答案:C

91.如果c为字符型变量,判断c是否为空格(假设已知空格ASCII码为32)不

能使用()

A、if(c=32)

B、if(c二二'32')

C、if(c=='\40')

D、if(c=='')

答案:B

解析:\40是八进制换算成二进制就是32也就是空格

92.sizeof指针的值是多少

A、指针本身所占空间大小

B、指针所指向内容的大小

答案:A

93.map随机读的时间复杂度是?

A、0(1)

B、0(n)

C、O(logN)

D、0(n2)

答案:C

94.分布式环境下是否可以通过套接字(Socket)实现两个进程(位于不同主机)

的通讯?

A、是

B、不是

答案:A

95.千兆网卡的理论读写速度是?

A、100M/S

B、125M/S

C、1000M/S

答案:B

96.下面程序运行的结果是。。

#include<stdio.h>

voidadd(int*p)(

(*p)++;

printf("%d",*p);

if(*p>5){

return;

)

add(p);

)

intmain(){

inti=0;

add(&i);

returnO;

)

A、12345

B、123456

C、111111

D、未知

答案:B

解析:

*p++:表示先访问*P,然后p++;(*p)++:表示先访问*P,然后将*P的值++;P指

针不变。

97.C++当中,若局部变量和全局变量重名,会发生什么?

A、只能访问局部变量

B、局部变量会屏蔽全局变量,要使用全局变量,需要使用“::”

C、全局变量会屏蔽局部变量,要使用局部变量,需要使用“::”

D、只能访问全局变量

答案:B

解析:局部变量会覆盖掉全局变量,如果想要使用的是全局变量,则在使用哪个

变量之前使用“::”,这个是全局命名空间的意思,因为是自己的全局空间,所

以名字为空,但::这个必须要加

98.程序中结束一个线程是否会导致程序挂掉?

A、会

B、不会

答案:B

99.c/c++中,有关纯虚函数说法不正确的是。

A、子类中必须覆盖基类的纯虚函数

B、含有纯虚函数的类不能被实例化

C、子类中不一定覆盖基类的虚函数

D、含有纯虚函数的类一定是抽象类

答案:A

100.有如下类模板定义:

tempIate<cIassT>cIassBigNumber(

longn;

pubIic:

BigNumber(Ti):n(i){)

BigNumberoperator+(BigNumberb)

(

returnBigNumber(n+b.n);

)

);

已知b1,b2是BigNumber的两个对象,则下列表达式中错误的是()?

A、3+3

B、b1+3

C、b1+b2

D、3+b1

答案:D

解析:

运算符重载调用形式其实是:b1.operator+(参数)简写成b1+参数

101.以下哪个C++容器不能用迭代器遍历

A、set

B、map

C、queue

D、vector

答案:C

102.在C++中,为了让某个类只能通过new来创建(即如果直接创建对象,编译

器将报错),应该()

A、将构造函数设为私有

B、将析构函数设为私有

C、将构造函数和析构函数均设为私有

D、没有办法能做到

答案:B

解析:编译器在为类对象分配栈空间时,会先检查类的析构函数的访问性,其实

不光是析构函数,只要是非静态的函数,编译器都会进行检查。如果类的析构函

数是私有的,则编译器不会在栈空间上为类对象分配内存。因此,将析构函数设

为私有,类对象就无法建立在栈(静态)上了,只能在堆上(动态new)分配类

对象。

103.下面程序执行结果:

usingnamespacestd;

classAt

pubIic:

virtualvoidf()(cout«"A::f()";}

voidf()const(cout«'A::f()const";)

);

classB:publicA(

pubIic:

voidf(){cout«"B::f0";}

voidf()const(cout«"B::f()const";}

};

voidg(constA*a)(

a->f0;

)

intmain(intargc,char*argv[]){

A*p=newB();

p->f0;

g(p);

deIete(p);

returnO;

)

A、B::f()B::f()const

B、:f()A::f()const

C、A::f0B::f()const

D、A::f0A::f()const

答案:B

解析:

g(P);执行的是父类的千()const,因为他不是虚函数

104.以下关于内存泄漏说法正确的是。

A、如果一个进程在运行过程中占用的内存无限制上升,那么该进程可能有内存

泄漏

B、单线程程序不可能内存泄漏

C、内存泄漏是操作系统内存管理出错导致的问题

D、只要进程在退出之前释放了所有分配的内存,那么就不会内存泄漏

答案:A

解析:A:内存泄露是进程申请了内存却没有释放。导致占用内存无限上升B:

内存泄露跟线程数无关C:内存泄露是程序设计的bug,不是操作系统的问题D:

进程退出之前释放申请的内存,不代表进程运行过程中没有内存泄露E:java

是自动管理内存的,但是也会有内存泄露,比如加入HashMap的对象hash值改

变了就无法从HashMap中remove,这就造成了内存泄露

105.快速排序的平均时间复杂度

A、0(n)

B、O(logN)

C、0(n2)

D、O(nlogN)

答案:D

106.unordered_map随机读的时间复杂度是?

A、0(1)

B、0(n)

C、0(IogN)

D、0(n2)

答案:A

107.如输入1,最后输出什么0voidmain(){chare;scanf("%c",&c);switch(c)

(case'1':printf("1");case'2':printf("2")case'3':printf("3")default:pr

intf("error");}}

A、1

B、123

C、error

D、123error

答案:D

解析:没有写break,依次执行

108.如果downcast是安全的(也就是,如果基类指针或者引用确实指向一个派生

类对象)这个运算符会传回适当转型过的指针。如果downcast不安全,这个运算

符会传回空指针(也就是说,基类指针或者引用没有指向一个派生类对象)。这个

是指C++里的0

Axdynamic_cast

B、reinterpret_cast

C、staticcast

D、constcast

答案:A

解析:dynamic_cast将一个基类对象指针(或引用)cast到继承类指针,dyna

mic_cast会根据基类指针是否真正指向继承类指针来做相应处理,即会作一定

的判断。对指针进行dynamijcast,失败返回null,成功返回正常cast后的对

象指针;对引用进行dynamijcast,失败抛出一个异常,成功返回正常cast后

的对象引用。reinterpret_cast这个转换是最“不安全”的,两个没有任何关

系的类指针之间转换都可以用这个转换实现。static-cast静态转换是最接近于

C风格转换,很多时候那需要程序员自身去判断转换是否安全。const_cast这个

转换好理解,可以将常量转成非常量。

109.intsolve(intx){.....}intsolve2(inty){......}inty;intmain(){x-+;/

/1x=solve(x);//2x=solve2(y);//3x=1;//4}对于上面代码,main函数内注释的

1、2、3、4只会同时存在一行,下面说法错误的是()

A、多线程对x的操作需要同步的包括x++

B、多线程对x的操作需要同步的包括x二solve(x)

C、多线程对x的操作需要同步的包括x=solve2(y)

D、多线程对x的操作需要同步的包括x=1

答案:D

解析:x=1是一个原子操作,原子操作不需要加锁

110.::name中::表示全局作用域符

A、正确

B、错误

答案:A

111.函数参数传递一个只读的对象使用以下哪种方式?

A、值传递

B、引用传递

答案:B

112.下列语句中错误的是()

A、int*p=newint(10);

B、int*p=newint[10];

C、int*p=newint;

D、int*p=newint[40][0);

答案:D

解析:"int*p=newint(10);”表示动态分配1个整型内存空间,初值为10;"

int*p=newintC10];"表示动态分配10个整型内存空间;'int*p二newint;"表示

动态分配1个整型内存空间;”而班=3收[4的(0)”想给一个数组分配内存

空间时,对数组进行初始化,这是不允许的。

113.有以下程序#也0111€16"$14。.11"#(164116$118(@)(2)-(2)丫0»€1唳冶()(5七@二2,

b=3,c=5,d;d=SUB(a+b)*c;printf("%d\n",d);}程序运行后的输出结果是0

A、0

B、-12

C、-20

D、10

答案:C

解析:宏定义在编译时会替换程序中的内容,是直接替换,不改变优先级。

114.请声明一个指针,其所指向的内存地址不能改变,但内存中的值可以被改变。

A、constintconst*x=&y;

Bxint*constx=&y;

C、constint*x=&y;

D、intconst*x=&y;

答案:B

解析:A,指针所指向的内存不可变,内存中的值也不能通过指针改变,错误;B,

指针所指向的内存不可变,内存中的值可以改变,正确;C,指针所指向的内存

可变,但内存中的值不能通过指针改变,错误;D,指针所指向的内存可变,但

内存中的值不能通过指针改变,错误;E,指针所指向的内存不可变,内存中的

值也不能通过指针改变,错误;

115.下面对析构函数的正确描述是()?

A、系统在任何情况下都能正确析构对象

B、用户必须定义类的所构函数

C、析构函数没有参数,也没有返回值

D、析构函数可以设置默认参数

答案:C

解析:编译器会默认生成析构函数不是必须定义的没有参数也没有返回值

116.unordered_map的底层数据结构是?

A、数组

B、链表

C、红黑树

D\哈希表

答案:D

117.若已定义x为int类型变量,下列语句中说明指针变量p的正确语句是()

A、intp=&x;

B、int*p二x;

C、int*p二&x;

D、*p=*x;

答案:C

118.冒泡排序是否是稳定的排序

A、是

B、否

答案:A

119.在64环境下,int*p=newint[16]{),sizeoftp)的值为多少?

A、1

B、4

C、8

D、64

答案:C

120.哪个指令可以查看git历史提交记录

A、gitlog

B、gitmit

C\gitadd

D、gitdiff

答案:A

121.数据库索引的说法正确的是?

Ax用处不大,可有可无

B、加快检索表中数据的方法

答案:B

122.关于CMAKE的说法正确的是?

Axcmake是跨平台工程构建工具

B、cmake是编译器

C、cmake是连接器

答案:A

123.下列程序的输出结果为()intmain(){intm=7,n=4;fIoata=38.4,b=6.4,x;

x=m/2+n*a/b+1/2;printf("%f\n"Fx);returnO;}

A、27.000000

B、27.500000

C、28.000000

D、28.500000

答案:A

解析:注意整型和整型的除法,等到的仍然是整型,并不会出现浮点型或者dou

ble型

124.若有定义typedefcharT[10];T*a;上述定义中a的类型与下面选项中完全相

同的是()?

Axchara[10];

B、char(*a)[10];

C、char*a;

D、char*a[10];

答案:B

125.关于C++中的new和C语言中的maIIoc,以下说法哪个是正确的:。

A、都是用来申请内存的

B、都是函数

C、都会调用构造函数

D、他们没有区别,都一样

答案:A

解析:1.malloc是库函数,而new是操作符2.maIloc需要申请内存大小,new

不需要3.malloc返回的指针类型需要进行强转,但是new不需要4.malloc不能

进行重载,但是new可以

126.有以下语句定义intx=5;constint*constp=&x;constint&q=x;intconst*ne

xt=&x;constint*j=&x:则有语法正确的是()

A、*p=1;

B、q++;

C、next++;

D、(*j)++;

答案:C

127.网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类

型、操作系统等无关,从而可以保重数据在不同主机之间传输时能够被正确解释。

网络字节顺序采用哪种排列顺序?

A、大端字节序

B、小端字节序

答案:A

128.以下不是doubIepare(int,int)的重载函数的是()

Avintpare(doubIe,doubIe)

B、doubIepare(doubIe,doubIe)

C、doubIepare(doubIe,int)

D、intpare(int,int)

答案:D

129.windows系统中查看网卡信息使用哪个指令?

A、ifconfig

B、ipconfig

答案:B

130.HTTP返回状态码200表示?

A、客户端请求失败

B、客户端请求成功

答案:B

131.程序的内存分配区域不包括

A、从静态存储区域分配

B、从栈区分配

C、从堆区分配

D、从文本区分配

答案:D

132.一个类的static成员函数和成员对象说法错误的是

A、static成员函数属于类

B、static成员函数属于类的对象实例

C、static成员变量属于类

答案:B

133.Mysql的默认端口号是多少?

A、80

B、21

C、3306

D、8000

答案:C

134.HTTP协议使用的哪种传输层协议

A、TCP

B、UDP

答案:A

135.linux系统,应用程序运行在内核态还是用户态?

Ax内核态

B、用户态

答案:B

136.const修饰变量,是为了声明该变量不可以被改变

A、正确

B、错误

答案:A

137.数据库引擎的实现采用何种数据结构?

A、B+树

B、红黑树

答案:A

138.以下叙述中正确的是()

A、在一个程序中,允许使用任意数量的#include命令行

B、在包含文件中,不得再包含其他文件

C、#incIude命令行不能出现在程序文件的中间

D、虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接

答案:A

解析:本题考查预处理中文件包含的概念,包含文件中可以包含其他文件,B选

项错误,#incIude可以出现在程序文件的中间,C选项错误,包含文件被修改了,

包含该文件的源程序必须重新进行编译和连接。

139.malloc申请到的内存中的初始值是否确定

A、确定

B、不确定

答案:B

140.C++中的拷贝构造函数在下面哪些情况下不会被调用()

A、对象创建的时候

B、使用一个类的对象去初始化该类的一个新对象

C、被调用函数的形参是类的对象

D、当函数的返回值是类的对象时,函数执行完成返回调用者

答案:A

解析:在三种情况下系统会调用拷贝构造函数:(1)用类的一个对象去初始化

另一个对象时(2)当函数的形参是类的对象时(也就是值传递时),如果是引

用传递则不会调用(3)当函数的返回值是类的对象或引用时

141.下面说法错误的是()

A、在组合类的析构函数中不需要显式调用其成员对象的析构函数

B、在类的继承层次中,可以自动进行向上和向下类型转换.而且都是安全的

C、构造函数可以重载,析构函数不能重载

D、C++的派生类如果要覆盖一个继承到的成员函数,在基类中需要将该函数声明

为virtuaI

答案:B

解析:A选项:在组合类的析构函数中并不需要显式调用其成员对象的析构函数,

因为当执行组合类的析构函数时,其数据成员也会被销毁,对于类成员对象来说,

成员对象销毁时,程序会自动调用其析构函数;不过对于组合类中new的指向类

成员的指针,组合类需要自己去delete该指针;B选项:显然是错的,在类继

承层次中,基类在上,派生类在下,所以可以自动进行向上类型转换,即可以使

基类指针和引用指向派生类对象,而不可以使派生类指针和引用指向基类对象;

C选项:对的,构造函数可以根据参数的不同实现函数重载,而因为析构函数没

有参数,对于一个类来说也是唯一的,所以是不能重载的;D选项:即派生类想

要重写继承来的成员函数,需要用到virtual函数,来实现动态多态。

142.TCP头部是多少个字节

A、4

B、8

C、20

D、1500

答案:C

143.以下代码中的两个sizeof用法有问题吗?voidllpperCase(charstr口)〃将

str中的小写字母转换成大写字母

(

for(size_ti=0;i<sizeof(str)/sizeof(str[0]);++i)

if(,a,<=str[i]&&str[i]<='z')

str-=Ca'-'A');

)

charstr[]="aBcDe";

cout«"str字符长度为:"«sizeof(str)/sizeof(str[0])«endI;

UpperCase(str);

cout«str«endI;

A、函数内的有问题

B、函数外的有问题

C、函数内,外的都有问题

D、用法正确

答案:C

解析:

外层是字符串长度不正确,内层是数组退化为指计。

144.什么函数不能声明为虚函数?

A、静态成员函数、构造函数

B、内联函数、构造函数

C、静态成员函数、析均函数

D、内联函数、析构函数

答案:A

解析:常见的不能声明为虚函数的有:普通函数(非成员函数)、静态成员函数、

内联成员函数、构造函数、友元函数。

145.以下哪个GCC编译环境下的链接器

A、Id

B、Iink

答案:A

146.在下列运算符中,优先级最高的是()

A、<=

B、*二

c、+

D、*

答案:D

解析:

单目运算符>算术运算符)移位〉比较〉按位》逻辑》三目运算符)赋值运算符

147.下面对构造函数的不正确描述是()?

A、用户定义的构造函数不是必须的

B、构造函数可以重载

C、构造函数可以有参数,也可以有返回值

D、构造函数可以设置默认参数

答案:C

解析:构造函数没有返回值

148.Mysql的说法正确的是?

A、Mysql为非关系型数据库

B、Mysql常作为关系型数据库使用

答案:B

149.vector的底层数据结构是?

A、数组

B、链表

C、红黑树

D、哈希表

答案:A

150.explicit修饰构造函数时,可以防止隐式转换,该说法是否正确

A、正确

B、错误

答案:A

151.小端模式下#incIude<stdio.h>unionC{inta;charb;};intmain(){Cc;c.a=0

x02020101;if(c.b二二0x02){printf("bingend\n");}else{printf("Iitterend\n

”);})输出是多少?

Axbingend

B、Iitterend

答案:B

152.函数重载发生在那个时期?

A、编译期

B、运行期

答案:A

153.inta=0;intb=a++:b的值是多少?

A、0

B、1

C、2

D、4

答案:A

154.函数参数的默认值不允许为()

Ax全局常量

B、直接常量

0\局部变量

D、函数调用

答案:C

解析:局部变量是函数调用之后,才会被构造出来,而函数参数的值的存在,是

在调用函数的时候就必须存在的。

155.下列代码,循环了多少次intk=2000;while(k>1){k=k»1;}

A、10

B、11

C、12

D、20

答案:A

解析:》是位移符号。可以理解为每次除以2.从k=2000直到仁1,共需10次位

移操作

156.关于类成员函数的重载、覆盖和隐藏,下面说法错误的是()

A、重载函数必须要在同一个类中

B、派生类函数覆盖基类函数,基类函数最好不要有virtual关键字

C、如果派生类的函数与基类的函数名相同,通过派生类的实例也只能调用到派

生类的函数。

D、重载函数不必使用virtual关键字修饰

答案:B

157.unsignedinta=0x10100101;charb=a;b的值是多少?

A、0x10

B、0x01

答案:B

158.快速排序是否是稳定的排序

Ax是

B、否

答案:B

159.下列描述中正确的是()

A、表示m>n为true或m。为true的表达式为"m>n&&m<n”

B、switch语句结构中必须有default语句

C、如果至少有一个操作数为true,则包含"||”运算符的表达式true

D、if语句结构中必须有else语句

答案:C

160.编译链接的过程包含预编译、编译、汇编、链接四个过程的说法是否正确

A、正确

B、错误

答案:A

161.下面程序段输出结果是()shortinti=32769;printf("%d\n",i);

A、32769

B、32767

C、-32767

D、输出不是确定的数

答案:C

解析:因为(32769)10二(1000000000000001)2,所以i的值在内存中补码形式表

示为1000000000000001,最高位是1表示负数,其表示的有符号数是-(0111111

111111111)2,即十进制数-32767。所以正确答案是C。

162.C++11的智能指针类型不包括?

A、shared_ptr

B、unique_ptr

C、weak_ptr

D、auto_ptr

答案:D

163.设x为整型变量,不能正确表达数学关系1VxV5的C++逻辑表达式是()。

A、1<x

B、x二二2||x二二3||x二二4

C、1

D、!(x=5)

答案:A

164.某函数申明如下:voidFunc(int&nVal1);有inta,下面使用正确的为()

A、Func(a)

B、Func(&a)

C、Func(*a)

D、Func(&(*a))

答案:A

165.要求打开文件D:\file.dat,并能够写入数据,正确的语句是()?

A、ifstreaminfile("D:\\fiIe.dat",ios::in);

B、ifstreaminfile("D:\\fiIe.dat",ios::out):

C、ofstreamoutfile("D:\\fiIe.dat",ios::in);

D、fstreaminfile("D:\\fiIe.dat",ios::in|ios::out);

答案:D

解析:A,选项创建了文件的读取流,且文件打开模式是读取方式,不符合,B,

选项创建了文件的读取流,不符合。C,选项创建了文件的写入流,但是文件打

开方式为读取方式,故而也不符合。D,选项创建了文件的读取写入流,同时文

件打开方式也为可读可写方式,故而选D。

166.以下关于类占用内存空间的说法错误的是。

A、类所占内存的大小是由成员变量(静态变量除外)和虚拟函数表指针空间(若

有虚函数)所决定

B、32位操作系统环境下空类的内存大小是4个字节

C、类中无论有多少个虚函数,只会多占一个虚表指针空间

D、子类的内存大小等于父类的内存大小加上子类独有成员变量的内存大小

答案:B

解析:空的类是会占用内存空间的,而且大小是1,原因是C++要求每个实例在

内存中都有独一无二的地址。

167.有关下面程序说法正确的是()(注:=代表空格)intmainO{chars[6]

="abcd";printf("\"%s\"\n",s);returnO;}

A、"abed"

B、\"abcd\"

C、"abed1"

D、编译错误

答案:A

168.虚析构函数是为了解决基类的指针指向派生类对象,并用基类的指针删除派

生类对象的时候可能出现的内存泄漏。此说法是否正确

A、正确

B、错误

答案:A

169.下面关于C++lambda表达式说法正确的有

A、[capture](params)->ret{body}这是一个完整的lambda表达式形式

B、capture值为[a,&b]表示a变量以值的方式呗捕获,b以引用的方式被捕获

C、capture为[二]表示不捕获外部的任何变量

Dvlambda表达式是属于C++14的新特性

答案:B

解析:Lambda函数语法定义:[capture](parameters)mutabIe->return-type{st

atement);A错误.[二]表示值传递方式捕捉所有父作用域的变量(包括this)方错

误.Iambda表达式是属于C++11&14新特性;D错误.

170.现在有以下语句:struct_THUNDER{intiVersion;chardag;charcAdv;inti

User;charcEnd;}Nowcoder

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论