C++开发基础(习题卷32)_第1页
C++开发基础(习题卷32)_第2页
C++开发基础(习题卷32)_第3页
C++开发基础(习题卷32)_第4页
C++开发基础(习题卷32)_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

试卷科目:C++开发基础C++开发基础(习题卷32)PAGE"pagenumber"pagenumber/SECTIONPAGES"numberofpages"numberofpagesC++开发基础第1部分:单项选择题,共57题,每题只有一个正确答案,多选或少选均不得分。[单选题]1.关于跳转语句,下列说法正确的是()。A)break语句只用于循环体中B)continue语句只用于循环体中C)break是无条件跳转语句,continue不是D)break和continue的跳转范围不够确定,容易产生问题答案:B解析:[单选题]2.若有序表的关键字序列为(b,c,d,e,f,g,q,r,s,t),则在二分查找关键字b的过程中,先后进行比较的关键字依次是A)f,c,bB)f,d,bC)g,c,dD)g,d,b答案:A解析:[单选题]3.以下选项中属于C++语言的基本数据类型是________。A)复数型B)几何型C)双精度型D)集合型答案:C解析:[单选题]4.已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是()A)0B)语法错C)1D)?假?答案:C解析:x>=y是成立的,A的ASCII值是小于B的,!y=1所以答案是1[单选题]5.下列关于文件流的描述中,正确的是________。A)文件流只能完成针对磁盘文件的输入输出B)建立一个文件流对象时,必须同时打开一个文件C)若输入流要打开的文件不存在,将建立一个新文件D)若输出流要打开的文件不存在,将建立一个新文件答案:D解析:[单选题]6.下列哪个类型的函数适合声明为内联函数()A)函数体语句较多B)函数体语句较少C)函数体内含有循环D)函数体内含有switch语句答案:B解析:内联函数一般来说仅适用于只有几条语句的小函数。所以函数体语句较多的函数不适合声明为内联函数。含有循环语句和switch语句的函数,也不定义为内联函数。[单选题]7.下列选项中,合法的字符常量是()。A)?x?(注:半角)B)?xxx?C)"x"D)68答案:D解析:[单选题]8.在下面存储类中,()对象的可见性与生存期不一致。A)外部类B)自动类C)内部静态类D)寄存器类答案:C解析:[单选题]9.下列标识符能做C++标识符的是________。A)1841quanzhanB)-scoreC)ClassD)gpa4.0答案:C解析:[单选题]10.若有如下语句序列:intk=1;while(k++<6);cout<A)5B)8C)6D)7答案:D解析:[单选题]11.下列表达式,能将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。[单选题]12.对n个元素进行直接插入排序时间复杂度为A)O(1)B)O(n)C)O(n^2)D)O(logn)答案:C解析:[单选题]13.以下叙述中错误的是________。A)C语句必须以分号结束B)复合语句在语法上被看作一条语句C)空语句出现在任何位置都不会影响程序运行D)赋值表达式末尾加分号就构成赋值语句答案:C解析:[单选题]14.如果x是整型变量,则合法的形式是()。A)&(x+5)B)*xC)&*xD)*&x答案:D解析:[单选题]15.用S表示进栈操作,用X表示出栈操作,若元素的进栈顺序是1234,为了得到1342的出栈顺序,相应的S和X的操作序列为()A)SXSXSSXXB)SSSXXSXXC)SXSSXXSXD)SXSSXSXX答案:D解析:[单选题]16.在一个C++程序中________。A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置答案:B解析:[单选题]17.假定一个类的构造函数为?A(inti=4,intj=0){a=i;b=j;}?,则执行?Ax(1);?语句后,x.a和x.b的值分别为()A)1和0B)1和4C)4和0D)4和1答案:A解析:[单选题]18.在一棵二叉树中有30个叶子结点,仅有一个孩子的结点有20个,则该二叉树共有()个结点A)79B)76C)56D)81答案:A解析:[单选题]19.下面选项中等价的是________。A)inta[2][3]={3,4,5}与inta[][3]={3,4,5};B)inta[2][3]={0,1}与inta[2][3]={{0},{1}};C)inta[2][3]={1,0,2,2,4,5}与inta[2][]={1,0,2,2,4,5};D)inta[][3]={1,0,2,2,4,5}与inta[2][3]={1,0,2,2,4,5};答案:D解析:[单选题]20.使用下列哪一限定符可强制改变访问方式()A)constB)shortC)longD)signed答案:A解析:与C语言一样,C++语言也可以使用const限定访问权限,告诉编译器,它所修饰的量是不能改变的,也就是不能作为左值使用。故const可强制改变访问方式。[单选题]21.当需要打开A盘上的以xxk.dat文件用于输入时,则定义文件流对象的语句为()A)fstreamfin(?A:xxk.dat?,1)B)ifstreamfin(?A:xxk.dat?,ios::nocreate)C)ofstreamfin(?A:xxk.dat?)D)ifstreamfin(?A:xxk.dat?,ios::app)答案:B解析:[单选题]22.若classB中定义了一个classA的类成员Aa,关于类成员的正确叙述是()。A)在类B的成员函数中可以访问A类的私有数据成员B)在类B的成员函数中可以访问A类的保护数据成员C)类B的构造函数可以调用类A的构造函数做数据成员初始化D)类A的构造函数可以调用类B的构造函数做数据成员初始化答案:C解析:[单选题]23.带头结点的单链表head为空的判断条件是()A)head==NULLB)head->next==NULLC)head->next==headD)head!=NULL答案:B解析:[单选题]24.以下描述中,错误的是________。A)一个派生类的两个基类分别具有成员x,则在派生类中有两个x,出现访问二义性B)解决二义性的方法是,在派生类访问该同名成员时,前面加基类类名限定C)解决二义性的方法只有选项B中所述的类名限定法D)基类和派生类出现同名成员,派生类中直接访问的同名成员是派生类自身的,称为支配规则答案:C解析:[单选题]25.intget();的功能是A)读入一个字符串并返回它的值B)读入一个字符并返回它的值C)输出一个字符串D)输出一个字符答案:B解析:[单选题]26.设X是树T中的一个非根结点,B是T所对应的二叉树,在B中,X是其双亲的右孩子,下列结论正确的是()A)在树T中,X是其双亲的第一个孩子B)在树T中,X一定无右兄弟C)在树T中,X一定是叶结点D)在树T中,X一定有左兄弟答案:D解析:[单选题]27.在关键字public后面定义的成员为类的()成员A)私有B)公用C)保护D)任何答案:B解析:[单选题]28.关于缺省(默认)构造函数的参数,下列描述错误的是________。A)可以无形参,也可以有形参B)若给出形参,则所有形参都有默认值C)可以给出对应实参值D)一定不能给出对应实参的值答案:D解析:[单选题]29.在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是()。A)地址传递B)单向值传递C)由实参传形参,再由形参传实参D)传递方式由用户指定答案:B解析:[单选题]30.下列关于C++函数的说明中正确的是()。A)内联函数就是定义在另一函数体内部的函数。B)函数体的最后一条语句必须是RETURN语句。C)标准C++要求在调用一个函数之前,必须先声明其原型。D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式。答案:D解析:[单选题]31.在C++中,关于构造、析构函数的自动生成,以下描述错误的是________。A)如果用户没有定义缺省构造函数,则系统自动生成一个空的缺省构造函数B)如果用户没有定义析构函数,系统自动生成一个空的缺省析构函数C)如果用户没有定义拷贝构造函数,则系统自动生成一个拷贝构造函数D)如果用户定义了一个构造函数,不管它是否是缺省构造函数,系统就不会再自动生成缺省构造函数了答案:A解析:[单选题]32.在文件中,可将读数据看做是从流中()数据A)插入B)替换C)提取D)删除答案:C解析:[单选题]33.对于有n个结点的二叉树,其高度为A)nlog2nB)log2nC)log2(n+1)D)不确定答案:D解析:[单选题]34.如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是:A)virtualshow()=0;B)virtualvoidshow();C)virtualvoidshow()=0;D)voidshow()=0virtual;答案:C解析:[单选题]35.无类型标识符是指()A)voidB)boolC)shortD)long答案:A解析:如果函数不需要返回值,可用void标识。故本题选A。bool表示布尔型,short表示短整型,long表示长整型,这三个都是数据类型。[单选题]36.已知递归函数f的定义如下:intf(intn){if(nA)14B)15C)16D)17答案:B解析:[单选题]37.定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为________。A)私有继承B)非私有继承C)保护继承D)公有继承答案:A解析:[单选题]38.引用与指针有什么区别错误的是?A)引用必须被初始化,指针不必B)引用初始化以后不能被改变C)指针只能读它所指向的对象,不可以改变所指的对象D)不存在指向空值的引用,但是存在指向空值的指针答案:C解析:[单选题]39.假定AB为一个类,则执行ABx;语句时将自动调用该类的()A)有参构造函数B)无参构造函数C)拷贝构造函数D)赋值构造函数答案:B解析:[单选题]40.在C++语言的数据类型中,int,short等类型的长度是()。A)固定的B)任意的C)用户自定义的D)与机器字长有关的答案:D解析:[单选题]41.执行下列程序后,屏幕的输出是()。#include<iostream>Usingnamespacestd;Voidswap(intA,intb){inttemp=a;a=b;b=temp;cout<<"a="<<a<<",b="<<b<<endl;}Intmain(){inta=3,b=2;swap(a,b);cout<<"a="<<a<<",b="<<b<<endl;return0;}A)a=2,b=3A=3,b=2B)a=3,b=2A=3,b=2C)a=2,b=3A=2,b=3D)a=3,b=2A=2,b=3答案:A解析:[单选题]42.以下不正确的是()。A)语句for(i=0;;i++)表示无限循环B)for(;;)表示无限循环C)for()也表示无限循环D)while(1)表示无限循环答案:C解析:[单选题]43.递归函数最终会结束,那么这个函数一定A)使用局部变量B)有一个分支不调用自身C)使用了全局变量或者使用了一个或者多个参数D)没有虚幻调用答案:B解析:[单选题]44.已知inta=3;,则执行完表达式a+=a-=a*a后,a的值是________。A)-3B)9C)-12D)6答案:C解析:[单选题]45.()不是构造函数的特征A)构造函数的函数名与类名相同B)构造函数可以重载C)构造函数可以设置缺省参数D)构造函数必须指定类型说明答案:D解析:[单选题]46.已知结构类型:structstudent{intnum;charname;floatscore;charsex;}Stu;则sizeof(Stu)的值为()。A)4B)16C)12D)10答案:B解析:[单选题]47.在小端序的机器中,如果unionX{intx;chary[4];};如果Xa;a.x=0x11223344;//16进制则:()A)y[0]=11B)y[1]=11C)y[2]=11D)y[3]=11答案:D解析:小端存储,低位存在低地址。0x44是最低位,所以它存放在最低的地址。y[0]取的是低地址的值,所以y[0]=0x44,y[3]=0x11[单选题]48.要求用成员函数重载的运算符是()。A)=B)==C)<=D)++答案:A解析:[单选题]49.以下选项中合法的字符常量是________。A)BB)'\010'C)68D)D答案:B解析:[单选题]50.执行如下语句,输出结果为()Charstr[]="Beijing";Cout<<strlen(strcpy(str,"China"));A)5B)7C)8D)12答案:A解析:[单选题]51.执行语句boolx=5;inta=x==5;变量a的值为()。A)0B)1C)5D)false答案:A解析:x=5,x的值为真,x==5结果为假,所以a为0.[单选题]52.构造函数不具备的特征是()A)构造函数的函数名与类名相同B)构造函数可以重载C)构造函数可以设置默认参数D)构造函数必须指定类型说明答案:D解析:[单选题]53.已知某函数的一个形式参数被说明为MAT[3][10],在下列说明中,与此等效的形参说明是________。A)intMAT[][10]B)intMAT[3][]C)intMAT[10][3]D)intMAT[][]答案:A解析:[单选题]54.已知inta[3][3]={1,2,3,4,5,6,7,8,9};则不能表示数组元素a[2][1]的地址是()。A)&a[2][1]B)*(a[2]+1)C)a[2]+1D)*(a+2)+1答案:B解析:[单选题]55.C++源程序文件扩展名为()A)cppB)hC)1ibD)obj答案:A解析:[单选题]56.输入输出时需要包含哪个头文件?()。A)iostreamB)iomanipC)istreamD)ostream答案:A解析:[单选题]57.在一个函数体中直接或间接地调用函数本身,这种调用称为()调用。A)嵌套B)递归C)直接D)间接答案:B解析:第2部分:多项选择题,共6题,每题至少两个正确答案,多选或少选均不得分。[多选题]58.下面哪些数据结构是链表的变种?()A)顺序表B)栈C)队列D)二叉树答案:ABC解析:[多选题]59.数据结构中,图结构的特点描述正确的是A)是研究数据元素之间的多对多的关系B)在这种结构中,任意两个元素之间可能存在关系C)在这种结构中,任意两个元素之间一定存在关系D)图中任意元素之间都可能相关答案:ABD解析:[多选题]60.关于时间复杂度的分析不正确的是A)对n个元素进行直接插入排序时间复杂度为O(n^2)B)对n个元素进行希尔排序时间复杂度为O(n^2)C)对n个元素进行直接插入排序时间复杂度为O(n)D)对n个元素进行希尔排序时间复杂度为O(n)答案:BCD解析:[多选题]61.数据结构中下面关于算法的说法正确的是()A)算法必须有输出B)算法必须在计算机上实现C)算法不一定有输入D)算法必须在有限步执行后能结束答案:ACD解析:[多选题]62.顺序表缺点包括A)插入不方便B)删除不方便C)表长固定D)以上都是答案:ABCD解析:[多选题]63.下列关于树的概念叙述中不正确的是()A)某一棵树中,结点A有2个孩子结点,3个兄弟结点,结点B是结点A的双亲结点,则结点B的度为5B)树的度是指树中所有结点度的总和C)任意一个非空树中有且仅有一个结点没有双亲结点D)任意一个非空树中有且仅有一个度为零的结点答案:ABD解析:第3部分:填空题,共6题,请在空白处填写正确答案。[填空题]64.作为语句标号使用的C++保留字case和default只能用于________语句的定义体中答案:switch解析:[填空题]65.如果说类B是类A的友元类,则类B的所有成员函数都是类A的_________。答案:成员函数解析:[填空题]66.类的成员分为_和_。答案:数据成员,成员函数解析:[填空题]67.C++的流库预定义了4个流,它们是cin、cout、clog和___。答案:cerr解析:第4部分:判断题,共11题,请判断题目是否正确。[判断题]68.凡是递归定义的数据结构都可以用递归算法来实现它的操作A)正确B)错误答案:对解析:[判断题]69.运算符重载后,原运算符的优先级和结合特性会改变答案:错解析:[判断题]70.树与二叉树是两种不同的树形结构()A)正确B)错误答案:对解析:[判断题]71.具有n个结点的满二叉树,其叶结点的个数为(n+1)/2。A)正确B)错误答案:对解析:[判断题]72.快速排序可以是不稳定的排序算法也可以是稳定排序算法A)正确B)错误答案:错解析:[判断题]73.可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。()A)正确B)错误答案:对解析:[判断题]74.定义内联函数的关键字是inline答案:对解析:[判断题]75.()类型转换函数只能定义为类的成员函数,不能定义为类的友元函数。A)正确B)错误答案:对解析:[判断题]76.一棵有n个结点的二叉树,从上到下,从左到右从1依次给予编号,则编号为i的结点的左儿子的编号为2i(2iA)正确B)错误答案:错解析:[判断题]77.在任意一棵非空二叉排序树中,删除某结点后又将其插入,则所得二排序叉树与原二排序叉树相同A)正确B)错误答案:错解析:[判断题]78.对象数组中每一个元素对象被创建时,系统都会调用一次类构造函数初始化该对象。()A)正确B)错误答案:对解析:第5部分:问答题,共20题,请在空白处填写正确答案。[问答题]79.阅读下列程序,写出运行结果。#include<iostream>usingnamespacestd;constdoublecval(5);intmain(){intval=24;cout<<val/cval<<endl;cout<<static_cast<int>(val/cval)<<endl;intival1=10,ival2;ival2=-ival1++;cout<<ival1<<""<<ival2<<endl;return0;}答案:4.8411-10解析:[问答题]80.假定有定义为?structNODE{intdata;NODE*next;};?,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序相同。voidf5(NODE*&L,inttable[],intn){if(n<=0){L=NULL;return;}L=newNODE;//生成附加的头结点inti=0;NODE*p=L;while((1)){p=p->next=(2);p->data=(3);i++;}p->next=NULL;//把最后一个结点的指针域置空p=L;L=L->next;//使L指向链表的第一个带值的结点Deletep;}答案:参考答案:(1)i<n(2)newNODE(3)table[i]解析:[问答题]81.有如下函数模板定义:template<classT>Tfunc(Tx,Ty){returnx*x*x+y*y*y;}在下列对func的调用中,错误的是()。(a)func(3,5);(b)func(3.0,5.5);(c)func(3,5.5);(d)func<int>(3,5.5);答案:本题主要考查函数模板的使用方法。这里选项a是将函数模板中的类型形参实例化为int型,选项b是将函数模板中的类型形参实例化为double型。选项c中函数func的两个实参一个为int型,一个为double型,无法使用该函数模板。选项d中模板实参被显式指定,显示指定模板实参的方法是用尖括号<>将用逗号隔开的实参类型列表括起来紧跟在函数模板实例的名字后面。如选项d将实参类型指定为int型。本题答案为:c。解析:[问答题]82.重载函数必须有不同的____答案:形参列表解析:在调用同名函数时,实现函数的重载必须满足下列条件之一:(1)参数表中对应的参数类型不同。(2)参数表中参数个数不同。因此重载函数必须有不同的形参列表。[问答题]83.函数重载可使一个函数名具有多种功能,称这种特性为--答案:多态性解析:不同的对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为多态性。[问答题]84.C语言中如此定义字符数组chars[]={?Z?,?Z?,?N?,?U?},则该字符数组至少需要字节存储单元。答案:5解析:[问答题]85.写出下列程序的效果#include<iostream.h>classA{private:staticintn;intNum;public:A(intx=0){Num=x;n++;}~A(){n--;}staticintGetNum(){returnn;}voidprint();};VoidA::print(){cout<<"n="<<n<<",Num="<<Num<<endl;}intA::n=5;voidmain(){A*p=newA(25);p->print();Aa;a.print();deletep;cout<<"n="<<A::GetNum()<<endl;}答案:答:程序运行结果为:n=6,Num=25n=7,Num=0n=6解析:[问答题]86.在C++程序中调用被C编译器编译后的函数,为什么要加extern?C??答案:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为:voidfoo(intx,inty);该函数被C编译器编译后在库中的名字为_,foo而C++编译器则会产生像_foo_int_in之t类的名字。C++提供了C连接交换指定符号extern?C?来解决名字匹配问题。解析:[问答题]87.执行下列代码inta=29,b=100;cout<<a<<b;则输出结果是__1__(填空题)答案:29100;解析:[问答题]88.开发一个C++程序,一般要经过几个步骤?答案:分析问题、设计算法、编写程序、编译、连接、运行、调试、维护解析:[问答题]89.HTTP返回状态码200表示?A)客户端请求失败B)客户端请求成功答案:B解析:[问答题]90.给出下面程序的输出结果。#include<iostream>usingnamespacestd;template<classT>Tmax(Tml,Tm2){return(m1>m2)?ml:m2:}voidmain(){cout<<max(1,7)<<″\t″<<max(2.0,5.0)<<endl;cout<<max(′y′,′b′<<″\t″<<max(″A″,″a″)<<endl;}75答案:ya解析:[问答题]91.行下列语句后,输出结果为__1__。intx=0,y=2,z=3;switch(x){case0:switch(y){Case1:cout<<'*';break;case2:cout<<'%';break;}case1:switch(z){case1:cout<<'$';Break;case2:cout<<'*';break;default:cout<<'#';}}(填空题)答案:%#;解析:[问答题]92.C++为结构动态分配内存的一般格式是?指针名=_______;?当不再使用这个空间时必须用?delete指针名;?释放空间。答案:new结构名解析:在C++语言中,使用new运算符实现动态内存分配。例如,可以写如下的语句:p=ne

温馨提示

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

评论

0/150

提交评论