C++程序设计基础考试题库(含答案)_第1页
C++程序设计基础考试题库(含答案)_第2页
C++程序设计基础考试题库(含答案)_第3页
C++程序设计基础考试题库(含答案)_第4页
C++程序设计基础考试题库(含答案)_第5页
已阅读5页,还剩232页未读 继续免费阅读

下载本文档

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

文档简介

PAGEPAGE237C++程序设计基础考试题库(含答案)一、单选题1.设存在整型变量intx,则下列句与其它三项含义不同的是()A、int*p=&x;B、int&p=x;C、int&p=x;D、int&p=x;答案:A解析:A选项是定义指针变量p。故含义不同。BCD选项是声明p是x的引用,p和x的地址相同,不是定义,不需要为a分配内存。2.下列哪个不是函数重载需要满足的条件()A、返回值类型不同B、参数个数不同C、参数个数相同时,参数类型不同D、函数名相同答案:A解析:

函数重载,是指在程序的同一范围内声明几个功能类似的同名函数。

在调用同名函数时,实现函数的重载必须满足下列条件之一:

(1)参数表中对应的参数类型不同。

(2)参数表中参数个数不同。

如果两个函数的名字和参数表都是一样的,仅仅是返回值类型不同,则这两个函数不是重载的,编译器认为它们是重复定义,编译时会报错。故本题选A。3.设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是()A、intm=max(22,max(59,70));B、intm=max(max(22,59),70);C、intm=max(22,59,70);D、intm=max(59,max(22,70));答案:C解析:函数参数的使用应与声明中类型与个数保持一致。函数形参只有两个参数,C选项传递了3个参数。4.C++中函数返回值类型不可以是()A、引用B、指针C、结构D、数组答案:D解析:返回值类型就是这个成员函数返回值的类型。C++函数的返回值类型可以是除数组和函数以外的任何类型。故不可以是D。5.在下面的二维数定义正确的是()A、intary[5][];B、intary[][5]={{0,1,2}};C、intary[][5];D、intary[5,5];答案:B解析:定义二维数在什么情况下也不能省略第二维,所以选项A错误。在没有初始化的情况下省略第一维是非法的,所以选项C错误。选项D格式错误。选项B省略的第一维的值为1,合法。6.考虑函数原型intfun1(floatx,chary="$",inta=9,charb=""),下面的函数调用中,属于不合法调用的是()A、fun1(3.14)B、fun1(3.14,"#")C、fun1(3.14,"$","")D、fun1(3.14,"#",7,"")答案:C解析:在C++语言中,可以在声明函数时为形参指定默认值。当调用有默认参数值的函数时,调用语句中可以不给出对应的实参,这就相当于调用该函数时以默认值作为参数。调用函数时,主调函数的实参与被调函数的形参按从左至右的顺序进行匹配对应。C选项中,实参的个数是3少于形参的个数4,故函数原型形参表中最前面的3个形参与3个实参相对应,即把字符型实参赋值给int型形参a,会产生编译错误。选C。同理,ABD是正确的。7.C++语言是从早期的C语言逐渐发展演变而来的,与C语言相比,C++在求解问题方法上进行的最大改进是()A、面向过程B、面向对象C、安全性D、复用性答案:B解析:C++语言是一种编译式的、通用的、大小写敏感的编程语言,完全支持面向对象的开发模式。

C++语言的主要特点:

(1)它是C语言的继承,尽量兼容C语言。

(2)加入了面向对象的特征,可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。

故与C语言相比,C++语言的最大改进是面向对象,选B。8.下列字符常量的写法中,错误的是()A、′\t′B、“B”C、‘*’D、‘a’答案:B解析:字符常量:用单引号括起来的单个字符或转义字符。字符串常量:用双引号括起来。选项B是字符串常量。9.设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式正确的是()A、intm=max(22,max(59,70));B、intm=max(max(22,59),max(59,70));C、intm=max(max(22,70),59);D、以上皆正确答案:D解析:ABC选项都正确,都可求出三者中的最大值。函数max只有两个参数,因此传递的实参也只能有两个。10.面向对象中的“对象”是指()A、行为抽象B、数据抽象C、行为抽象和数据抽象的统一D、行为抽象和数据抽象的对立答案:C解析:结构化程序设计使用的是功能抽象,面向对象程序设计不仅能进行功能抽象,而且能进行数据抽象。“对象”实际上是功能抽象(行为抽象)和数据抽象的统一。11.C++中定义标准输入输出的库为()A、stdioB、mathC、iostreamD、stdlib答案:C解析:标准输入输出流:<iostream>。

标准文件流:<fstream>。

标准字符串处理函数:<string>。

标准数学函数:<cmath>。故本题选C。12.假定a为一个整型数组名,则元素a[4]的字节地址为()A、a+4B、a+8C、a+16D、a+32答案:C解析:a是数组,a数组的地址也就是数组中第一个元素的地址为a[0],如果想算a[i]的地址套下面的公式:a[0]+i*d,其中d为该数组类型所占的字节数,C++中,d是4个字节。所以a[4]=a[0]+4*4=a+16。13.设函数int&index(int*a,inti)返回数组a中下标为i的元素,如存在整型数组intArray[]={1,2,3},在执行index(Array,2)++后,Array中各元素值为()A、{0,1,2}B、{1,1,2}C、{1,2,4}D、{0,2,3}答案:C解析:数组的下标从0开始。函数int&index(int*a,inti)返回数组a中下标为i的元素,故index(Array,2)表示数组array中下标为2的元素,即array[2]=3。执行index(Array,2)++,即array[2]=array[2]+1=4,故array[2]的4替换了3,最终Array={1,2,4}。14.在编译指令中,嵌入指令是指()A、#includeB、#defineC、#ifD、#else答案:A解析:嵌入指令#include指示编译器将一个源文件嵌入到带有#include指令的源文件中该指令所在的位置处。故本题选A。15.要求指针p既不可以修改其本身的内容,也不可修改其所指向地址的内容,定义正确的是()A、constchar*p=“ABCD”;B、char*constp="ABCD";C、charconst*p="ABCD";D、constchar*constp="ABCD";答案:D解析:C++语言也可以使用const限定访问权限,const修饰指针变量时,基本含义如下:

1)如果唯一的const位于符号*的左侧,表示指针所指数据是常量,数据不能通过本指针改变,但可以通过其他方式进行修改;指针本身是变量,可以指向其他的内存单元。

2)如果唯一的const位于符号*的右侧,表示指针本身是常量,不能让该指针指向其他内存地址;指针所指的数据可以通过本指针进行修改。

3)在符号*的左右各有一个const时,表示指针和指针所指数据都是常量,既不能让指针指向其他地址,也不能通过指针修改所指向的内容。故本题选D。16.下列关于类的权限的描述错误的是()A、类本身的成员函数只能访问自身的私有成员B、类的对象只能访问该类的公有成员C、普通函数不能直接访问类的公有成员,必须通过对象访问D、一个类可以将另一个类的对象作为成员答案:A解析:声明为私有的成员变量仅能在类内的成员函数中被访问,在类外是不可访问的。但反过来说不成立。故A错误。部分成员函数声明为公有的,用于提供外界和这个类的对象相互作用的接口,从而使得其他函数也可以访问和处理该类的对象。即类的对象可以访问该类的公有成员。故BCD正确。17.对函数intmax(inta,intb=0,intc=0,intd=0,inte=0);下列调用方式正确的是()A、intm=max(10,11,12,13,14);B、intm=max(10,,12,13,14);C、intm=max(10,11,,13,14);D、intm=max(10,11,12,,14);答案:A解析:调用函数时,主调函数的实参与被调函数的形参按从左至右的顺序进行匹配对应。总之,定义函数时,只能为函数最后面的连续若干个参数设置默认值,且在调用处也只能缺省后面的连续若干个实参。BCD选项中的默认值都不是放在最后的连续参数,故都错误。18.函数默认参数在函数原型中说明,默认参数必须放在参数序列的()A、前部B、中部C、后部D、两端答案:C解析:定义函数时,只能为函数最后面的连续若干个参数设置默认值,且在调用处也只能缺省后面的连续若干个实参。即默认参数必须在参数序列的后部。19.若有以下类型标识符定义:intx=2;charw='a';floaty=23.45f;doublez=45.6789;则表达式w*x+y-z的结果类型是()A、floatB、charC、intD、double答案:D解析:当不同类型的量进行混合算术运算时,系统自动进行合理的类型转换。编译器就会自动把低级类型向高级类型转换。数据类型级别由低到高分别为:char→int→float→double。转换时由低级别向高级别转换。会自动提升为参与表达式求值的最上级类型double。故本题选D。使用强制类型转换运算符:static_cast或const_cast。20.一个函数的功能不太复杂,但要求被频繁调用,选用最适合的是()A、内联函数B、重载函数C、递归函数D、嵌套函数答案:A解析:对于只有很少几条语句的函数,特别是频繁调用时,函数调用导致的额外时间开销可能会使程序运行明显变慢。为了避免这种频繁的函数调用与返回,C++语言引入了内联函数的概念。故本题选A。注意:内联函数一般来说仅适用于只有几条语句的小函数。21.假定有char*P="Hello";,要输出这个字符串的地址值的正确写法是()A、cout<<*PB、cout<<PC、cout<<&PD、cout<<(void*)P答案:D解析:char*是声明一个字符类型的指针。这个指针指向的地址上只能存放字符类型的值。

由于C++标准库中I/O类对<<操作符重载,因此在遇到字符型指针时,会将其当作字符串名来处理,输出指针所指的字符串。既然这样,那么我们就别让它知道那是字符型指针,所以得用到强制类型转换,把char的指针转换为无返回值指针类型,即cout<<(void*)P,故选D。

A输出的是H;B输出的是hello;C输出的是指针的地址。22.内联函数的特点是()A、减少代码量,加快访问速度B、减少代码量,减缓访问速度C、增加代码量,减缓访问速度D、增加代码量,加快访问速度答案:D解析:为了避免这种频繁的函数调用与返回,加快执行速度,C++语言引入了内联函数的概念。使用内联函数,编译器在编译时并不生成函数调用,而是将程序中出现的每一个内联函数的调用表达式直接用该内联函数的函数体进行替换,就像整个函数体在调用处被重写了一遍一样。很显然,使用内联函数会使最终可执行程序的体积增大。故综上,内联函数增加代码量,加快访问速度。23.函数intsum(inta=1,intb=1,intc=3)可与下列哪个函数同时声明()A、doublesum(int);B、charsum(int,int);C、intsum(double);D、intsum(int,int,int);答案:C解析:函数重载,区别是参数类型不同,参数个数不同。sum(inta=1,intb=1,intc=3)包含了sum(int,int,int),sum(int,int),sum(int),sum()这四种情况,而根据一个函数的返回值是无法得知要调用哪个函数的,只能根据参数来决定,所以这道题跟返回值没关系。故ABD都错,选C。24.使用下列哪一限定符可强制改变访问方式()A、constB、shortC、longD、signed答案:A解析:与C语言一样,C++语言也可以使用const限定访问权限,告诉编译器,它所修饰的量是不能改变的,也就是不能作为左值使用。故const可强制改变访问方式。25.下列变量命名中,非法的是()A、A**LONGB、MyCarC、my_carD、a48答案:A解析:C++中变量命名规则和标识符命名规则一样:只能由大小写字母、下划线和数字组成,且数字不能开头。故A错。26.以下能正确定义数组并正确赋初值的语句是()A、intN=5,b[N][N];B、inta[2]={{1},{3},{4},{5}};C、intc[2][]={{1,2},{3,4}};D、intd[3][2]={{1,2},{3,4}};答案:D解析:A选项数组长度不能使用变量。B选项初始化列表与数组长度不符。C选项中数组列长度不能省略。故只有D正确。27.有以下程序段,其输出结果是()#include<iostream>usingnamespacestd;voidmain(){charb[]='Hello,you';b[5]='!';cout<<b<<endl;}A、Hello,youB、HelloC、Hello!youD、!答案:C解析:数组b用来存放'Hello,you'中的每个个字符,下标从0开始。数组b开始存放的是字符串“Hello,you”,原来b[5]=',',执行b[5]='!'后,数组b存放的是字符串变成“Hello!you”,所以输出Hello!you。选C。28.调用声明为intresult(inta,intb)的函数时,正确的方法是()A、result(1,2)B、result(1)C、result(0.1,0.3)D、result(1,2,3)答案:A解析:函数的使用应与声明中类型,个数保持一致。故只有A符合。29.下列关于C++标识符的命名不合法的是()A、PadB、name_1C、A#bcD、_a12答案:C解析:一般的标识符命名规则:

字母、数字和下划线的组合,大小写敏感,但不能以数字开头,也不能和系统中使用的关键字完全相同。故C错误,“#”不属于字母、数字和下划线的任何一种。30.头文件扩展名为()A、cppB、hC、ubD、ob答案:B解析:在C++中,

.h文件是头文件。

.cpp文件是源程序文件;31.下列不是函数重载所要求的条件是()A、函数名相同B、参数个数不同C、参数类型不同D、函数返回值类型不同答案:D解析:函数重载:是指在程序的同一范围内声明几个功能类似的同名函数。即前提是函数名相同,故A正确。实现函数的重载必须满足下列条件之一:(1)参数表中对应的参数类型不同。

(2)参数表中参数个数不同。故BC正确。要注意的是,返回值类型不能用来区分函数,也就是说,如果仅仅是返回值类型不同,则这两个函数不是重载的,编译器认为它们是重复定义,编译时会报错。故本题选D。32.下列表达式,哪个是声明P为指向常量的常量指针()A、constint*PB、int*constPC、constint*constPD、int*P答案:C解析:C++语言也可以使用const限定访问权限,const修饰指针变量时,基本含义如下:

1)如果唯一的const位于符号*的左侧,表示指针所指数据是常量,数据不能通过本指针改变,但可以通过其他方式进行修改;指针本身是变量,可以指向其他的内存单元。

2)如果唯一的const位于符号*的右侧,表示指针本身是常量,不能让该指针指向其他内存地址;指针所指的数据可以通过本指针进行修改。

3)在符号*的左右各有一个const时,表示指针和指针所指数据都是常量,既不能让指针指向其他地址,也不能通过指针修改所指向的内容。P为指向常量的常量指针,即指针和所指数据都是常量,故需*左右各有一个const,本题选C。33.设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是()A、intm=max(22,max(59,70));B、intm=max(max(22,59),70);C、intm=max(22,59,70);D、intm=max(59,max(22,70));答案:C解析:max中参数为两个,当实参数量多于形参数量时,多于的参数会被忽略。故本题中不能比较出三者中的最大值34.决定C++语言中函数的返回值类型的是()A、return语句中的表达式类型B、调用该函数时系统随机产生的类型C、调用该函数时的主调用函数类型D、在定义该函数时所指定的数据类型答案:D解析:函数都需要由类型说明并在定义该函数时指定数据类型。故本题选D。35.一个函数功能不太复杂,但要求被频繁调用,应选用()A、内联函数B、重载函数C、递归函数D、嵌套函数答案:A解析:对于只有很少几条语句的函数,特别是频繁调用时,函数调用导致的时间开销可能会使程序运行明显变慢。为了避免这种频繁的函数调用与返回,加快执行速度,C++语言引入了内联函数的概念。故本题选A。36.下列默认参数的声明不正确的是()A、intmax(inta,intb,intc,intd=0);B、intmax(inta,intb,intc=0,intd=0);C、intmax(inta=0,intb,intc=0,intd=0);D、intmax(inta,intb=0,intc=0,intd=0);答案:C解析:C++语言规定,提供默认值时必须按从右至左的顺序提供,即有默认值的形参必须在形参列表的最后。如果有某个形参没有默认值,则它左侧的所有形参都不能有默认值。故C错误,默认值应该连续出现再形参列表的最后。调用函数时,主调函数的实参与被调函数的形参按从左至右的顺序进行匹配对应。即在调用时只能缺省后面的连续若干个实参。37.下列哪种类型的函数适合声明为内联函数()A、函数体语句较多B、函数体逻辑较复杂C、函数执行时间较长D、函数语句较少,执行速度要求高答案:D解析:对于只有很少几条语句的函数,特别是频繁调用时,函数调用导致的时间开销可能会使程序运行明显变慢。为了避免这种频繁的函数调用与返回,加快执行速度,C++语言引入了内联函数的概念。故本题选D。38.已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5,正确的是()A、A1.p=5;B、A1->p=5;C、A1.*p=5;D、*A1.p=5;答案:D解析:假设已经有了一个对象,则可使用“.”运算符调用成员函数赋初值。题中p是指针,所以如果要给m赋值为5,则*A1.p=5;。39.下列函数原型声明语句中,错误的是()A、intf(void);B、voidf(int);C、intf(a);D、voidf(doublea);答案:C解析:题目考查原型声明。函数原型:返回类型函数名(参数类型列表)在函数原型中,可以省略形参的名字,而只给出它的类型及默认值。故ABD对。不能只写形参的名字,故C错。40.在一个被调用函数中,关于return语句使用的描述,错误的是()A、被调用函数中可以不用return语句B、被调用函数中可以使用多个return语句C、被调用函数中,如果有返回值,就一定要有return语句D、被调用函数中,一个return语句可返回多个值给调用函数答案:D解析:被调用函数中,一个return语句只能返回一个值给调用函数。故D错误。return语句当然可以有多条,只不过函数运行的时候,最后只会执行其中的一条。故B正确。

函数有返回值,那么函数就要返回其声明类型的值,所以应该有return语句返回相应的值,否则编译出错。故C正确。41.设有说明constchar*constp="ABCD";,则下列选项中正确的是()A、允许修改指针p本身,且允许通过p修改所指向的数据B、允许修改指针p本身,且禁止通过p修改所指向的数据C、禁止修改指针p本身,且允许通过p修改所指向的数据D、禁止修改指针p本身,且禁止通过p修改所指向的数据答案:D解析:C++语言也可以使用const限定访问权限,const修饰指针变量时,基本含义如下:

1)如果唯一的const位于符号*的左侧,表示指针所指数据是常量,数据不能通过本指针改变,但可以通过其他方式进行修改;指针本身是变量,可以指向其他的内存单元。

2)如果唯一的const位于符号*的右侧,表示指针本身是常量,不能让该指针指向其他内存地址;指针所指的数据可以通过本指针进行修改。

3)在符号*的左右各有一个const时,表示指针和指针所指数据都是常量,既不能让指针指向其他地址,也不能通过指针修改所指向的内容。本题中,const既出现在*的左侧,也出现在*的右侧,表示指针本身及指针所指的数据都是不可修改的。故本题选D。42.已知类A中一个成员函数说明"voidSet(A&a);",其中A&a的含义是()A、指向类A的指针为aB、将a的地址值赋给变量SetC、a是类A的对象引用,用来作函数Set()的形参D、变量A与a按位相与作为函数Set()的参数答案:C解析:引用”的定义格式如下:

类型名&引用名=同类型的某变量名;首先,A&a是函数Set()的形参,根据引用的语法形式,a是一个引用,它的类型是A&,也就是说,a是类A的对象的引用。Set是函数名,不是变量名。符号&表示引用,不是按位与。答案为C。43.C++中是否允许在类结构中定义函数()A、不允许B、允许C、仅允许定义构造函数D、只不允许定义构造函数答案:B解析:类中定义的数据和函数称为这个类的成员。故允许在类结构中定义函数。44.声明函数为内联使用的关键字为()A、constB、inlineC、shortD、signed答案:B解析:内联函数应该定义在前,调用在后,定义时只需在函数头返回值类型的前面加上关键字inline。故本题选B。

short表示数据类型短整型。定义引用时,可以在定义的前面加const关键字,表明该引用是“常引用”。D为干扰项。45.对使用关键字new所开辟的动态存储空间,释放时必须使用()A、freeB、createC、deleteD、realse答案:D解析:使用new运算符动态申请的内存空间,需要在使用完毕释放。C++提供了delete运算符,用来释放动态分配的内存空间。delete运算符的基本用法如下:

delete指针;故本题选C46.对C++语言和C语言的兼容性,描述正确的是()A、C++兼容CB、C++部分兼容CC、C++不兼容CD、C兼容C++答案:A解析:C语言是C++语言的前身,在进一步扩充和完善C语言的基础上得到了C++语言。故C++语言兼容C语言。47.函数intsum(inta=10,intb=15,intc=25);不可与下列哪个函数同时声明()A、intsum(int,int,int,int)B、intsum(int,int,int)C、intsum(double)D、intsum(double,double,double);答案:B解析:名称相同,参数个数相同,参数类型相同,无法重载。48.一个函数功能不太复杂,但要求频繁使用,则该函数适合作为()A、内联函数B、重载函数C、递归函数D、嵌套函数答案:A解析:对于只有很少几条语句的函数,特别是频繁调用时,函数调用导致的额外时间开销可能会使程序运行明显变慢。为了避免这种频繁的函数调用与返回,C++语言引入了内联函数的概念。故本题选A。内联函数的适用情况:只有几条语句,且频繁调用的小函数。49.关于成员函数特征的描述中,错误的是()A、成员函数一定是内联函数B、成员函数可以重载C、成员函数可以设置参数的缺省值D、成员函数可以是静态的答案:A解析:成员函数:是类中的另一类成员,个数不限,其声明方式与普通函数的声明相同。成员函数可以是静态的。一个类的成员函数之间可以互相调用。类的成员函数可以重载,也可以设定参数的默认值。故BCD正确。成员函数既可以在类体内定义,也可以在类体外定义。如果成员函数定义在类体内部,则默认是内联函数。也可以在类体内部声明函数,并加上inline关键字,然后在类体外给出函数定义,这样的成员函数也是内联函数。除此之外的不是内联函数。故A错。50.下面关于数组的初始化正确的是()A、charstr[]={'a','b','c'};B、charstr[2]={'a','b','c'};C、charstr[1][2]={{'a','b'},{'e','d'}};D、charstr[][]={'a','b','c'};答案:A解析:一维数组:T[N],N代表数组“元素个数”。如果对数组的全部元素赋初值,定义时数组长度可以省略;如果被定义数组的长度,与初值个数不同,则数组长度不能省略。故A正确,B中N应为3。

二维数组:如果对全部元素都赋初值,则“行长度”可以省略。需要注意的是只能省略“行长度”,但第二维的长度即“列长度”不能省略。故C错误,应为str[2][2]。D错误,列长度不能省略。51.设函数int&index(inta,inti)返回数组a中下标为i的元素,如果整型数组intarray[]={1,2,3},在执行index(array,1)+=3后,array中各元素值为()A、{4,2,3}B、{1,5,3}C、{1,2,6}D、{4,5,6}答案:B解析:数组的下标从0开始,index(array,1)+=3使用加法赋值运算符(+=),故也可以表示为:index(array,1)=index(array,1)+3。index(array,1)返回array[1]的值,即为2,然后array[1]=2+3=5,所以array中各元素值为{1,5,3}。选B。52.考虑函数原型voidpass(intx,inty=5,charz=‘*’),下面的函数调用中,属于不合法调用的是()A、pass(5)B、pass(5,8)C、pass(6,'#')D、pass(0,0,'*')答案:C解析:在C++语言中,可以在声明函数时为形参指定默认值。当调用有默认参数值的函数时,调用语句中可以不给出对应的实参,这就相当于调用该函数时以默认值作为参数。

调用函数时,主调函数的实参与被调函数的形参按从左至右的顺序进行匹配对应。

C选项中,实参的个数是2少于形参的个数3,故函数原型形参表中最前面的2个形参与2个实参相对应,即把字符型实参#赋值给int型形参y,会产生编译错误。故C错误。同理,ABD是正确的。53.可用作C++语言用户标识符的一组标识符是()A、void,define,+WORDB、a3_b3,_123,YNC、for,-abc,CaseD、2a,DO,sizeof答案:B解析:一般的标识符命名规则:

字母、数字和下划线的组合,大小写敏感,但不能以数字开头,也不能和系统中使用的关键字完全相同。

故本题只有B正确。A有+,C有-,D数字开头。54.对类中声明的变量,用new运算符创建一维数组的正确形式是()A、int*p=newa[10];B、float*p=newfloat[10];C、int*p=newfloat[10];D、int*p=newint[5]={1,2,3,4,5,6};答案:B解析:使用new运算符可以动态分配一个任意大小的数组:

p=newT[N];

其中,T是任意类型名,p是类型为T*的指针,N代表数组“元素个数”,可以是任何的值为正整数的表达式。数组中元素的类型是T类型。故本题选B。float*p=newfloat[10];的含义是:开辟一个长度为10的float型数组的空间,并把首地址赋予指针变量p,而p是指向float型数据的指针。55.下列有关重载函数的说法中错误的是()A、重载函数必须具有不同的返回值类型B、重载函数名必须相同C、重载函数参数个数可以不同D、重载函数必须有不同的形参列表答案:A解析:函数重载,是指在程序的同一范围内声明几个功能类似的同名函数。在调用同名函数时,实现函数的重载必须满足下列条件之一:

(1)参数表中对应的参数类型不同。

(2)参数表中参数个数不同。如果两个函数的名字和参数表都是一样的,仅仅是返回值类型不同,则这两个函数不是重载的,编译器认为它们是重复定义,编译时会报错。故本题选A。56.下面关于类和对象说法不正确是()A、类由数据与函数组成B、一个对象必属于某个类对象是类的实例C、对象是类的实例D、一个类的对象只有一个答案:D解析:对象是类的一个具象,类是对象的一个抽象。一个类的对象可以不只有一个。故D错误。57.下列语句错误的是()A、intval(20);B、externintval(20);C、constintval;D、externconstintval;答案:C解析:因为被const修饰的变量的值在程序中不能被改变,所以在声明符号常量时,必须对符号常量进行初始化,除非这个变量时用extern修饰的外部变量。故只有C错误,既没有初始化,也没有用extern修饰。58.下列关于类的权限描述错误的是()A、类本身的成员函数可以访问自己定义的任何成员B、类的对象只能访问公有成员C、普通函数只能通过对象访问类的公有成员D、一个类不能包含另一个类的对象作为成员答案:D解析:因为类本身就是一种新的数据类型,所以一个类的对象可以作为另一个类的成员。普通成员函数由类的对象调用。故D错误。访问类的成员变量及调用类的成员函数时,要考虑成员名的访问范围。类中定义的访问方法是public的,所以可以在类外(如主函数中)中直接调用。类内的函数仅作为类内其他函数的辅助函数使用,并不对外提供服务,这样的函数可以定义为私有的,也就是说,在类外不可以直接调用它们。故ABC正确。59.使用new创建的对象,对其生命周期描述正确的是()A、由系统决定B、由用户控制C、全局生命周期D、永久存在答案:B解析:运算符new用于建立生存期可控的对象,new返回这个对象的指针。使用new建立的动态对象只能用delete删除,以便释放所占空间,因此由new创建的对象生命周期由用户控制。60.C++中函数中的return指令可以()A、只能有一条B、0或多条C、至少有一条D、只能主函数调用答案:B解析:

如果函数是void的话,可以没有return,否则一定要有return,在最结尾加就行了,可以有多个。61.下列关于类的权限的描述错误的是()A、类本身的成员函数只能访问自身的私有成员B、类的对象只能访问该类的公有成员C、普通函数不能直接访问类的公有成员,必须通过对象访问D、一个类可以将另一个类的对象作为成员答案:A解析:类本身的成员函数既可以访问自身的私有成员,也可以访问自身的公有成员。故A错。将部分成员函数声明为公有的,用于提供外界和这个类的对象相互作用的接口,从而使得其他函数也可以访问和处理该类的对象。故BCD正确。62.下列关于类定义的叙述中,正确的是()A、类中可以定义成员变量,并赋初值B、类中可以声明成员函数,并可以给出参数的默认值C、类体不能为空,即必须定义成员变量及成员函数D、类中仅能包含成员变量答案:B解析:选项A中,类中可以定义成员变量,但不能赋初值。初值应该是特定对象中成员变量的初始值。而定义类时,还没有创建类的对象,所以不能赋初值。通常为对象中成员变量赋初值的工作由构造函数完成。

选项C中,类体可以为空,也就是说可以定义一个空类。

选项D中,类中既可以包含成员变量,也可以包含成员函数。故本题只有B正确。63.以下有关类与对象的叙述中,错误的是()A、对象是类的一个实例B、一个类可以有多个对象C、任何一个对象都归属于一个具体的类D、只要是某个类的对象,那么该对象就可以访问这个类的所有成员答案:D解析:对象是类的一个具象,类是对象的一个抽象。类和对象的关系如同一个模具与用这个模具铸造出来的铸造件之间的关系。故一个类可以有多个对象,且任何一个对象都归属于一个具体的类。故ABC正确。类的对象只能访问公有成员,其他函数不能使用类的私有成员,也不能使用公有成员函数,它们只能通过类的对象使用类的公有成员函数。因此D错误。64.已知:"inta=5;charc='a';"则输出语句cout<<c+1<<a<<c;的显示结果是()A、65aB、985aC、98'5'aD、65'a'答案:B解析:cout是一个标准输出流对象,使用流插入运算符“<<”向输出设备屏幕输出信息。使用cout进行输出时,系统会自动判别输出数据的类型,并按相应的类型输出对应的数据。字符型数据在内存中以ASCII码的形式存放。故a对于的ASCII的代码值为97,c+1为98,因此输出结果为985a。故选B。65.定义了指向常量的指针p的选项是()A、constint*p;B、int*p;C、int*constp=&x;D、constint*constp=&x;答案:A解析:const修饰指针变量时:如果唯一的const位于符号*的左侧,表示指针所指数据是常量,数据不能通过本指针改变,但可以通过其他方式进行修改;指针本身是变量,可以指向其他的内存单元。本题中,“指向常量的指针p”,表示指针所指数据是常量,故唯一的const位于符号*的左侧,选A。注意:如果唯一的const位于符号*的右侧,表示指针本身是常量,不能让该指针指向其他内存地址;指针所指的数据可以通过本指针进行修改。在符号*的左右各有一个const时,表示指针和指针所指数据都是常量,既不能让指针指向其他地址,也不能通过指针修改所指向的内容。66.在C++中,头文件扩展名为()A、.cppB、.hC、.libD、.obj答案:B解析:在C++中,.h文件是头文件。.cpp文件是源程序文件;67.如果有int型变量a,则定义指向变量a的指针p正确的写法是()A、intp=&vB、int*p=&vC、int&p=*vD、int*p=v答案:B解析:指针变量中保存的是一个地址,有时也称指针指向一个地址。定义一个指向int型变量a的指针p为:int*p=&a;故选B68.面向对象不仅进行功能抽象,还要进行()A、动态抽象B、消息抽象C、数据抽象D、算法抽象答案:C解析:对象具有两个特性:一是状态(也称为属性);二是行为(也称为操作)。在面向对象技术中,属性表现为数据,而把对对象的操作定义为实现一定功能的函数。故“对象”实际上是功能抽象和数据抽象的统一。选C。69.如想使用std命名空间,正确的程序语句是()A、usingstd;B、namespacestd;C、usingnamespace;D、usingnamespacestd;答案:D解析:using语句引用其他命名空间的标识符的语法格式有两种形式:

using命名空间名::标识符;

usingnamespace命名空间名;故D符合。70.下列关于类和对象的叙述中,错误的是()A、一个类只能有一个对象B、对象是类的具体实例C、类是某一类对象的抽象D、类和对象的关系是一种数据类型与变量的关系答案:A解析:具有类类型的变量称为对象。类只是一个样板,根据这个样板,可以在内存中开辟出同样结构的实例,即对象。所以说,对象是类的实例。故一个类可以有多个对象。答案为A。71.若有定义int*p=newint(0),则下列说法正确的是()A、系统用指针变量p来表示所指整型变量B、声明一个指针变量p,指向名为new的存储单元C、系统为指针变量p分配一个整型数据的存储空间D、通过运算符new,分配一个整型数据的存储空间,并将其内存地址赋予指针变量答案:D解析:在C++语言中,使用new运算符实现动态内存分配。例如,可以写如下的语句:

p=newT;其中,T是任意类型名,p是类型为T*的指针。这样的语句会动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给指针p。本题中,int*p=newint(0)表示通过运算符new,分配一个整型数据的存储空间,并将其内存地址赋予指针变量。D正确。72.下列关于类的权限描述错误的是()A、类本身的成员函数可以访问自身的任何成员B、类的对象只能访问公有成员C、普通函数可以不通过对象直接访问类的公有成员D、一个类可以包含另一个类的对象作为成员答案:C解析:类本身的成员函数可以使用类的所有成员(私有和公有成员)。故A正确。类的对象只能访问公有成员函数,其他函数不能使用类的私有成员,也不能使用公有成员函数,它们只能通过定义类的对象为自己的数据成员,然后通过类的对象使用类的公有成员函数。故B正确,C错误。类本身就是一种新的数据类型,所以一个类的对象可以作为另一个类的成员。故D正确。73.不同对象调用同名函数,但导致完全不同行为的现象称为()A、抽象B、封装C、继承D、多态性答案:D解析:多态是指不同种类的对象都具有名称相同的行为,而具体行为的实现方式却有所不同。

可简单理解为:多态即同名,行为不同,故本题选D。74.下面关于对象概念的描述中错误的是()A、任何对象都必须有继承性B、对象是属性和方法的封装体C、对象间的通信靠消息传递D、操作是对象的动态属性答案:A解析:

对象的特点包括两个方面:属性和操作。属性指的是描述对象静态特征(即状态)的数据项;操作指的是描述对象动态特征(即行为)的函数序列。故D正确。故也可称对象是属性和方法的封装体。故B正确。“继承”,就是在编写一个“新”类的时候,以现有的类作为基础,使得新类从现有的类“派生”而来,从而达到代码扩充和代码复用的目的。继承支持层次概念。并不是任何对象都必须具有继承性。因此A错误。75.结构化程序设计所规定的三种基本控制结构是()A、输入、处理、输出B、树形、网形、环形C、顺序、选择、循环D、主程序、子程序、函数答案:C解析:在编写程序时,使用3种基本控制结构来构造程序:顺序、选择、循环基本控制结构。这3种结构到目前为止仍是主要的控制结构。故本题选C。76.下列关于类和对象的说法中,正确的是()A、编译器为每个类和类的对象分配内存B、类的对象具有成员函数的副本C、类的成员函数由类来调用D、编译器为每个对象的成员变量分配内存答案:D解析:选项A中,类并不占用空间,占用空间的是类的对象。

选项B中,定义类后,不是每创建一个对象,就为成员函数分配存储的空间。实例化对象时,只会分配成员变量的空间,而不会分配成员函数的空间。

选项C中,类的成员函数不一定是由类来调用的,普通成员函数由类的对象调用。类的静态成员函数由类来调用。故本题只有D正确。77.用于包含C++标准库iostream的预处理指令是()A、#define<iostream>B、#include<iostream>C、#define‘iostream’D、#include‘iostream’答案:B解析:嵌入指令#include指示编译器将一个源文件嵌入到带有#include指令的原文件中该指令所在的位置处。当使用当程序中用到cin和cout时,需要在程序中包含头文件<iostream>。故综上,B符合。78.下列输出语句中,正确的是()A、cout<<("%c\n","student")B、cout<<("%s\n","hello")C、cout<<("%c\n","c")D、cout<<("%s\n",&a)答案:B解析:%c是输岀单个字符的格式控制符。%s是输出字符串的格式控制符。故只有B正确。选项C中"c"是字符串,不能用c%格式输出。79.结构化程序设计的基本原则不包括()A、多态性B、自顶向下C、模块化D、逐步求精答案:A解析:在结构化程序设计中,采用自顶向下、逐步求精及模块化的思想,将复杂的大问题层层分解为许多简单的小问题。故不包括A。80.下列表达式,哪一是声明P为指向常量的指针()A、constint*pB、int*constp;C、constint*constpD、int*p答案:A解析:const修饰指针变量时,基本含义如下:

1)如果唯一的const位于符号*的左侧,表示指针所指数据是常量,数据不能通过本指针改变,但可以通过其他方式进行修改;指针本身是变量,可以指向其他的内存单元。

2)如果唯一的const位于符号*的右侧,表示指针本身是常量,不能让该指针指向其他内存地址;指针所指的数据可以通过本指针进行修改。

3)在符号*的左右各有一个const时,表示指针和指针所指数据都是常量,既不能让指针指向其他地址,也不能通过指针修改所指向的内容。故本题中,“指向常量”,是指数据是常量,故const在*左侧,选A。81.在C++语言中用于注释的标识符是()A、&B、//C、*D、/答案:B解析:C++程序中,仍沿用C语言的注释风格,即注释有以下两种形式。

1)从/*开始,到*/结束,这之间的所有内容都视作注释。

2)从//直到行尾,都是注释。故综上,/*……*/或//都用于注释。本题选B。82.若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是()A、n=*qB、p=nC、p=qD、*q=*P答案:B解析:指针变量中保存的是一个地址,有时也称指针指向一个地址。指针p指向整型变量n,p中保存n的地址,而不是值2。p指向的地址中的值是2。地址与地址中的值不要混淆。故p是指向int类型的指针,n是int类型的数据,不能p=n。故B错。83.下列对于类的描述错误的是()A、类要先声明后使用B、类是具有唯一标识的实体C、两个类可以使用同一个名称D、组成类的不仅有数据,还可以有对数据进行操作的函数答案:C解析:类是具有唯一标识符的实体,就是说类名不能重复。故C错误。84.下列选项中,不属于类模型结构图中的是()A、类名B、属性C、操作D、对象名答案:D解析:类模型结构与对象结构很类似,如下图:对象结构图与类模型结构图中都含有属性与操作,不同的是,对象结构图中有对象名,类模型结构图中有类名。故本题选D。85.以下说法中不正确的是()A、C++程序中必须有一个主函数main(),而且是从main()的第一条语句开始执行B、非主函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的C、主函数可以在任何地方出现D、主函数必须出现在固定位置答案:D解析:程序中必须有且仅有一个主函数main(),这是程序执行的总入口。但并无固定位置。主函数也称为主程序。程序从主函数的开始处执行,按照其控制结构,一直执行到结束。故A、C正确,D错误。主函数中可以调用程序中定义的其他函数,但其他函数不能调用主函数。故B正确。答案为D。86.intFunc(int,int);不可与下列哪个函数构成重载()A、intFunc(int,int,int);B、doubleFunc(int,int);C、doubleFunc(double,double);D、doubleFunc(int,double);答案:B解析:函数重载的条件:同名,不同参数表,不同参数个数。故B不可以。87.设存在数组a,其长度为Len,则下列哪项泛型算法用于在a中寻找值Value的位置()A、reverse(a,a+Len,Value);B、sort(a,a+Len,Value);C、find(a,a+Len,Value);D、copy(a,a+Len,Value);答案:C解析:A选项用于将数组元素反转;B选项用于对a进行升幂排序;C选项用于查找数组a内是否存在值为value的元素;D选项用于输出数组的内容。故本题选C。88.下列哪个类型函数不适合声明为内联函数()A、函数体语句较多B、函数体语句较少C、函数执行时间较短D、函数执行时间过长答案:A解析:内联函数的适用情况:只有几条语句,且频繁调用的小函数。故A明显错误。89.关于对象概念的描述中,说法错误的是()A、对象就是C语言中的结构体B、对象代表着正在创建的系统中的一个实体C、对象是类的一个变量D、对象之间的信息传递是通过消息进行的答案:A解析:类是对现实世界中客观事物的抽象。对象是系统中用来描述客观事物的一个实体。故A错误,B正确。对象是类的一个具象,类是对象的一个抽象。对象是类的实例,是类的一个变量。故C正确。对象之间通过消息进行信息传递,故D正确。90.对classpoint,如使用point*ptr=newpoint[2];创建对象数组,则删除此数组使用的语句是()A、deleteptr[2];B、delete[]ptr;C、deleteptr[];D、delete[2]ptr;答案:B解析:当delete释放动态对象数组时,必须告诉这个动态对象数组有几个元素对象,C++使用“[]”来实现,即delete[]ptr;。91.包含自定义头文件file.h的预处理指令是()A、#define<file.h>B、#includefile.hC、#definefile.hD、#include"file.h"答案:D解析:嵌入指令#include指示编译器将一个源文件嵌入到带有#include指令的源文件中该指令所在的位置。书写时,可以使用引号,也可以用尖括号。尖括号引用系统提供的包含文件。双引号引用自己定义的包含文件。根据题意,D选项正确。92.C++程序文件扩展名为()A、.cppB、.hC、.libD、.obj答案:A解析:在C++中,.cpp文件是源程序文件,即.cpp是程序文件扩展名。.h文件是头文件。93.在inta=3,*p=&a;中,*p的值是()A、变量a的地址值B、无意义C、变量p的地址值D、3答案:D解析:指针p指向整型变量a,p中保存a的地址,而不是a中的值3。而*p表示地址中的值,即为3。地址与地址中的值不要混淆。94.假设给出如下的函数声明:voidfunc(inta,intb=2,intc=3);,则下列函数调用正确的是()A、func(1,22,333);B、func();C、func("#",20);D、func(5,,9);答案:A解析:在C++语言中,可以在声明函数时为形参指定默认值。当调用有默认参数值的函数时,调用语句中可以不给出对应的实参,这就相当于调用该函数时以默认值作为参数。

调用函数时,主调函数的实参与被调函数的形参按从左至右的顺序进行匹配对应。本题中,“func(1,22,333);”是正确的,调用时给出了所有实参,且参数的类型也是匹配的。

“func();”是错误的,声明中参数a没有默认值,调用时必须给出实参值。

“func("#",20);”是错误的,实参表中的字符型实参#赋值给int型形参b,会产生编译错误。“func(5,,9);”是错误的,调用时给出的实参应该是连续排列的。95.类声明的内容用花括号括起来,在花括号后跟哪个符号表示类声明结束()A、:B、;C、,D、.答案:B解析:类所有声明的内容用花括号括起来,右花括号后的分号(即;)作为类声明语句的结束标志。96.设存在函数intmin(int,int)返回两参数中较小值,若求15,26,47三者中最小值,下列表达式中错误的是()A、intm=min(min(15,26),min(15,47));B、intm=min(15,26,47);C、intm=min(15,min(47,26));D、intm=min(min(47,26),16);答案:B解析:函数的使用中参数的类型与个数应与声明中保持一致。函数形参只有两个参数,B选项传递了3个参数,故错误。97.适宜采用inline定义函数情况是()A、函数体含有循环语句B、函数体含有switch语句C、函数代码多,不常调用D、函数代码少,频繁调用答案:D解析:定义内联函数时只需在函数头返回值类型的前面加上关键字inline。内联函数的适用情况:只有几条语句,且频繁调用的小函数。故本题选D。98.下列表达式,能将P声明为指向常量的指针的是()A、constint*P;B、int*constP;C、constint*constP;D、int*P;答案:A解析:C++语言也可以使用const限定访问权限,const修饰指针变量时,基本含义如下:

1)如果唯一的const位于符号*的左侧,表示指针所指数据是常量,数据不能通过本指针改变,但可以通过其他方式进行修改;指针本身是变量,可以指向其他的内存单元。

2)如果唯一的const位于符号*的右侧,表示指针本身是常量,不能让该指针指向其他内存地址;指针所指的数据可以通过本指针进行修改。

3)在符号*的左右各有一个const时,表示指针和指针所指数据都是常量,既不能让指针指向其他地址,也不能通过指针修改所指向的内容。本题要声明“指向常量的指针”,即所指数据是常量,故const在左侧,选A。99.下列访问成员的方式哪个是正确的()A、对象名.对象成员名B、对象指针名.对象成员名C、对象名->对象成员名D、类名->对象成员名答案:A解析:定义了类和对象后,就可以访问对象的成员。通过对象访问成员变量的一般格式如下:对象名.成员变量名故本题选A。还可以使用指针或引用的方式来访问类成员。如果是通过指针访问成员变量,则点运算符.换为箭头运算符->,即使用“指针->成员名”的方式来访问对象的成员。故BCD错误。100.关于类和对象不正确的说法是()A、类是一种类型,它封装了数据和操作B、对象是类的实例C、一个类的对象只有一个D、一个对象必属于某个类答案:C解析:对象就是一类物体的实例,将一组对象的共同特征抽象出来,从而形成“类”的概念。一个类的对象可以有很多,因此C项错误。101.在类外定义成员函数时,::运算符两侧分别连接()A、返回值类型函数名B、返回值类型类名C、函数名类名D、类名函数名答案:D解析:类体外函数定义的前面必须用“类名::”来限定,格式如下:返回值类型类名::成员函数名(参数列表)

{

成员函数的函数体

}102.若Test类中的一个成员函数set的说明如下:voidset(Test&a);,则Test&a的含义是()A、指向类Test的名为a的指针B、a是Test的对象引用,用来作函数set()的形参C、将a的地址赋给变量setD、变量Test与a按位与的结果作为函数set()的参数答案:B解析:首先,Test&a是函数set()的形参,根据引用的语法形式,a是一个引用,它的类型是Test&,也就是说,a是类Test的对象的引用。故本题选B。

set是函数名,不是变量名。符号&表示引用,不是按位与。103.关于封装,下列说法中不正确的是()A、通过封装,对象的全部属性和操作结合在一起,形成一个整体B、通过封装,一个对象的实现细节被尽可能地隐藏起来C、通过封装,每个对象都成为相对独立的实体D、通过封装,对象的属性都是不可见的答案:D解析:通过封装,数据和操作数据的函数紧密联系起来;还可以将对象的一部分属性和函数隐藏起来,让这部分属性和函数对外不可见,而留下另一些属性和函数对外可见,作为对对象进行操作的接口。故D错误,只有部分不可见。封装特点:将对象的属性及实现细节隐藏起来,只给出如何使用的信息。故B正确。封装将对象属性和操作结合在一起,构成独立的单元。故A,C正确。104.布尔类型标识符是()A、voidB、shortC、longD、bool答案:D解析:布尔类型标识符是bool。如果函数没有返回值,那么应声明为void类型。short短整型。long长整型。105.cout是C++的()A、关键字B、对象C、类D、运算符答案:B解析:C++类中对象:

cin:运算符为>>,用于键盘输入。cout:运算符为<<,用于屏幕输出。故cout是对象。选B。106.下列不属于C++关键字的是()A、externB、gotoC、freeD、default答案:C解析:

extern、goto、default是C++关键字。free不是C++关键字。107.下列哪个类型的函数适合声明为内联函数()A、函数体语句较多B、函数体语句较少C、函数体内含有循环D、函数体内含有switch语句答案:B解析:内联函数一般来说仅适用于只有几条语句的小函数。所以函数体语句较多的函数不适合声明为内联函数。含有循环语句和switch语句的函数,也不定义为内联函数。108.若有以下的定义:inta=100,*p=&a;,则下列选项中,表述错误的是()A、声明变量p,其中*表示p是一个指针变量B、变量p经初始化,获得变量a的地址C、变量p只可以指向一个整型变量D、变量p的值为100答案:D解析:指针p指向整型变量a,p中保存a的地址,而不是值100。p指向的地址中的值是100。故D错误。注意:地址与地址中的值不要混淆。109.下列哪种默认参数的声明是不正确的()A、intmax(inta,intb,intc,intd=0);B、intmax(inta,intb,intc=0,intd=0);C、intmax(inta=0,intb,intc=0,intd=0);D、intmax(inta,intb=0,intc=0,intd=0);答案:C解析:调用函数时,主调函数的实参与被调函数的形参按从左至右的顺序进行匹配对应。总之,定义函数时,只能为函数最后面的连续若干个参数设置默认值,且在调用处也只能缺省后面的连续若干个实参。故只有C不符合在最后面连续设置默认值。110.按照标识符的要求,不能组成标识符的符号是()A、连接符B、下划线C、大小写字母D、数字字符答案:A解析:标识符命名规则:字母、数字和下划线的组合,大小写敏感,但不能以数字开头,也不能和系统中使用的关键字完全相同。故不包括A。111.对于int*pa[5];的描述中,正确的是()A、pa是一个指向数组的指针,所指向的数组是5个int型元素B、pa是一个指向某数组中第5个元素的指针,该元素是int型变量C、pa[5]表示数组的第5个元素的值,是int型的值D、pa是一个具有5个元素的指针数组,每个元素是一个int型指针答案:D解析:int*pa[5]中pa是一个具有5个元素的指针数组,每个元素是一个int型指针。int(*pa)[5]中pa是一个指向数组的指针,所指向的数组是5个int型元素。112.下列不是C++语言的基本数据类型的是()A、字符类型B、整数类型C、逻辑类型D、枚举类型答案:D解析:C++的基本数据类型:bool布尔型(又称逻辑型)

char字符型

int整型

float浮点型

double双精度浮点型故不包括D。113.假定指针变量p定义为"int*p=newint(100);",要释放p所指向的动态内存,应使用语句()A、deletep;B、delete*p;C、delete&p;D、delete[]p;答案:B解析:如果是使用new运算符动态分配了一个数组,那么释放该数组时,语句如下:delete[]指针;故本题选D。114.若二维数组y有m列,则位于y[i][j]之前的元素数量是()A、j*m+iB、i*m+jC、i*m+j-1D、i*m+j+1答案:B解析:二维数组y有m列,即每行有m个元素。y[i][j]前面的元素有前i行i*m个元素再加上第i行第j列前面的j个元素,一共i*m+j个元素。115.在函数调用时,如某一默认参数要指明一个特定值,则有()A、其之前所有参数都必须赋值B、其之后所有参数都必须赋值C、其前、后所有参数都必须赋值D、其前、后所有参数都不必赋值答案:A解析:定义函数时,只能为函数最后面的连续若干个参数设置默认值,且在调用处也只能缺省后面的连续若干个实参。调用函数时,主调函数的实参与被调函数的形参按从左至右的顺序进行匹配对应。故默认值前的实参必须都赋值。选A。116.关于new运算符的下列描述中,错误的是()A、它可以用来动态创建对象和对象数组B、使用它创建的对象或对象数组可以使用运算符delete删除C、使用它创建对象时要调用构造函数D、使用它创建对象数组时必须指定初始值答案:D解析:使用“类名*对象指针名=new类名;”创建对象时,调用无参的构造函数。如果这个构造函数是由编译器为类提供的,则类中成员变量不进行初始化。使用“类名*对象指针名=new类名();”创建对象时,也调用无参的构造函数。如果这个构造函数是由编译器为类提供的,则对类中的成员变量进行初始化。故创建对象都要调用构造函数,但不一定都指定初始值。故D错误,C正确。在C++语言中,使用new运算符实现动态内存分配。可以创建对象和对象数组。使用new创建的对象,必须用delete来撤销。故A、B正确117.编写C++程序一般需经过的几个步骤依次是()A、编辑、调试、编译、连接B、编译、调试、编辑、连接C、编译、编辑、连接、运行D、编辑、编译、连接、运行答案:D解析:用C++语言写成的程序称为源程序,源程序必须经过C++编译程序翻译成机器语言才能执行。一般需要经过编辑、编译、连接、运行。118.存储以下数据,占用存储字节最多的是()A、0B、'0'C、"0"D、0.0答案:D解析:整型通常将8位的块作为一个字节,32位或4个字节作为一个字(word)。一般float用一个字(32位)来表示。double类型用两个字(64位来表示),longdouble类型用三个或四个字(96或128位)来表示。A为整型,B为字符,C为字符串,D为小数,为double类型,因此占用字符字节最多。119.下列哪个类型函数不适合声明为内联函数()A、函数体语句较多B、函数体语句较少C、函数执行时间较短D、函数被频繁调用答案:A解析:内联函数主要应用于代码量少的函数,编译时,编译程序将整个函数体的代码复制到调用该函数的位置,而不会编译成函数调用的指令。故对于代码量较大的函数,如果将其定义为内联函数,则增加的程序长度对时空效率的不利影响很大。故内联函数一般来说仅适用于只有几条语句的小函数。答案为A。120.使用string.h库操纵字符串时,将两个字符串连接成一个字符串的函数是()A、strlen()B、strcap()C、strcat()D、strcmp()答案:C解析:strcat():用于连接字符串。strlen():返回字符串的长度。strcmp():比较两个字符串的大小。不存在strcap()。故本题选C。121.如果有intx,*p;floaty,*q;则下面操作中,正确的是()A、p=xB、p=qC、p=&xD、p=&y答案:C解析:C选项,指针变量p指向整型变量×,正确。122.对于new类型名[size]描述正确的是()A、申请可以存储size个字节的空间B、申请可以存储1个该数据类型的空间C、申请可以存储size个该数据类型对象的空间D、申请可以存储1个字节的空间答案:C解析:使用new运算符还可以动态分配一个任意大小的数组:p=newT[N];

其中,T是任意类型名,p是类型为T*的指针,N代表数组“元素个数”。这条语句动态分配了N*sizeof(T)个字节的内存空间。即new类型名[size]//申请可以存储size个该数据类型的对象。选C。123.关于对象性质,下列描述错误的是()A、同一类对象之间不可相互赋值B、可以使用对象数组C、对象可以用作函数参数D、一个对象可以用作另一个类的成员答案:A解析:对象是类的一个具象,类是对象的一个抽象。同一类的对象之间可以相互赋值。故A错误。124.采用重载函数的目的是()A、实现共享B、减少空间C、提高速度D、使用方便,提高可读性答案:D解析:有了函数重载机制,C++程序员在编写程序时,可以对完成类似功能的不同函数统一命名,可以有效重用代码,增加可读性。故本题选D。

针对同名的函数,分别为其编写函数体,即可实现各自的功能。125.不能作为函数重载的判断依据的是()A、constB、返回类型C、参数个数D、参数类型答案:B解析:实现函数的重载必须满足下列条件之一:

(1)参数表中对应的参数类型不同。

(2)参数表中参数个数不同。用const修饰传递参数,意思是通知函数,它只能使用参数而无权修改它,可以作为函数重载的判断依据。返回类型不能作为函数重载的依据。故本题选B。126.在C++中使用流进行输入输出,其中专用于从键盘进行输入的流是()A、cerrB、cinC、coutD、cfile答案:B解析:C++类中对象:

cin:运算符为>>,用于键盘输入。

cout:运算符为<<,用于屏幕输出。故本题选B。127.对C++中主函数描述正确的是()A、名称为main,可为多个B、名称不限,可为多个C、名称为main,必须有且只能有一个D、名称不限,必须有且只能有一个答案:C解析:C++程序以.cpp作为文件扩展名,文件中包含若干个类和若干个函数。程序中必须有且仅有一个主函数main(),这是程序执行的总入口。128.使用重载函数的目的是()A、共享函数数据B、减少代码量C、优化运行效率D、提高可读性答案:D解析:函数重载,是指在程序的同一范围内声明几个功能类似的同名函数。使用同一个函数名作为功能一样的函数的函数名,这也符合人们的习惯。针对同名的函数,分别为其编写函数体,即可实现各自的功能。故使用其可提高代码可读性。选D。129.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()A、类B、对象C、函数体D、数据块答案:A解析:面向对象方法中的类:是对具有相同属性和行为的同一类对象的抽象描述。故封装将对象属性和操作结合在一起,构成独立的单元,即实体。故本题选A。130.以下叙述中不正确的是()A、在一个函数中,可以有多条return语句B、函数的定义不能嵌套,但函数的调用可以嵌套C、函数必须有返回值D、不同的函数中可以使用相同名字的变量答案:C解析:函数都需要由类型说明。intmain()指出main是整数类型,返回值由return后面的表达式决定,且表达式的值必须与声明函数的类型一致。如果函数不需要返回值,还可用void标识。故C错误,函数可以没有返回值。131.对指针动态分配空间用的关键字是()A、defineB、intC、newD、float答案:C解析:在C++语言中,使用new运算符实现动态内存分配。例如,可以写如下的语句:

p=newT;故本题选C。B、D都是基本数据类型。132.考虑函数原型voidtest(inta,intb=7,charch='*'),下面的函数调用中,属于不合法调用的是()A、test(5)B、test(5,8)C、test(6,'#')D、test(0,0,'*')答案:C解析:在C++语言中,可以在声明函数时为形参指定默认值。当调用有默认参数值的函数时,调用语句中可以不给出对应的实参,这就相当于调用该函数时以默认值作为参数。调用函数时,主调函数的实参与被调函数的形参按从左至右的顺序进行匹配对应。C选项中,实参有2个,少于形参的个数3,故从左至右匹配,将会把字符型实参#赋值给整型形参b,则会产生编译错误。故选C。133.对使用关键字new所开辟的动态存储空间,释放时必须使用()A、freeB、createC、deleteD、release答案:C解析:使用new运算符动态申请的内存空间,需要在使用完毕释放。C++提供了delete运算符,用来释放动态分配的内存空间。delete运算符的基本用法如下:

delete指针;134.若有以下标志符定义:charc=’c’;inta=4;floatf=3.14;doubled=1.212;则表达式c+a/(int)d+f的结果类型是()A、floatB、charC、intD、double答案:D解析:当不同类型的量进行混合算术运算时,系统自动进行合理的类型转换,编译器就会自动把低级类型向高级类型转换。数据类型级别由低到高分别为:char→int→float→double。转换时由低级别向高级别转换。会自动提升为参与表达式求值的最上级类型double。故本题选D。也可以在程序中使用强制类型转换运算符:static_cast或const_cast。135.C++中注释“//”的有效范围是()A、从“//”开始到行尾B、从“//”开始到下一个“//”C、“//”及其后一个字符D、从“//”开始到程序尾答案:A解析:C++程序中,仍沿用C语言的注释风格,即注释有以下两种形式。

1)从/*开始,到*/结束,这之间的所有内容都视作注释。

2)从//直到行尾,都是注释。故本题选A。136.下面不能够判断字符串S是空串的是()A、if(S[0]==0)B、if(strlen(S)==0)C、if(strcmp(S,"")==0)D、if(S=='\0')答案:D解析:S字符串的第一个字符,即S[0]=0,说明S是空串,A正确。系统函数strlen()表示字符串S的长度,若等于0,则判断字符串S是空串,B正确。系统函数strcmp()表示比较两个字符串,若相等,返回0,故strcmp(S,"")==0可以判断字符串S是空串,C正确。S=='\0'这个表达式左边是字符串,右边是字符,显然是非法的,如果改写成if(S=="\0")就可以判断字符串S是否是空串。故D错。137.关于对类的描述中,错误的是()A、类是创建对象的

温馨提示

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

评论

0/150

提交评论