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

下载本文档

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

文档简介

试卷科目:C++开发基础C++开发基础(习题卷30)PAGE"pagenumber"pagenumber/SECTIONPAGES"numberofpages"numberofpagesC++开发基础第1部分:单项选择题,共57题,每题只有一个正确答案,多选或少选均不得分。[单选题]1.执行语句?inti=3.6*6;"后,整型变量i的值为()。A)18B)21C)22D)24答案:B解析:先乘再取整[单选题]2.有以下程序#include<iostream.h>voidmain(){inti,s=0;for(i=1;i<10;i+=2)s+=i;cout<<s;}程序执行后的输出结果是()。A)自然数1~9的累加和B)自然数1~10的累加和C)自然数1~9中的奇数之和D)自然数1~10中的偶数之和答案:C解析:[单选题]3.假定AB为一个类,则执行?ABa(2),b[3],*p[4];?语句时调用该类构造函数的次数为()A)3B)4C)5D)9答案:B解析:[单选题]4.数据结构排序算法中比较常见的不稳定排序算法是A)冒泡排序B)折半插入排序C)快速排序D)以上都是稳定的答案:C解析:[单选题]5.已知:shorta=1;则表达式sizeof(a+'a')的值为()。A)1B)2C)4D)8答案:C解析:[单选题]6.设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则其元素个数为()A)r-fB)r-f+1C)(r-f)modn+1D)(r-f+n)modn答案:D解析:[单选题]7.C++的继承性允许派生类继承基类的()A)部分特性,并允许增加新的特性或重定义基类的特性B)部分特性,但不允许增加新的特性或重定义基类的特性C)所有特性,并允许增加新的特性或重定义基类的特性D)所有特性,但不允许增加新的特性或重定义基类的特性答案:A解析:[单选题]8.希尔排序算法中,最后一趟排序的地址增量一定是下面的哪种情况()。A)nB)n/2C)1D)任意值答案:C解析:[单选题]9.设有如下定义,则程序段的输出结果是____________。intarr[]={6,7,8,9,10};int*ptr;ptr=arr;*(ptr+2)+=2;cout<<*ptr<<?,?<<*(ptr+2);A)8,10B)6,8C)7,9D)6,10答案:D解析:[单选题]10.构造异质链表的意义是()。A)用数组组织类对象B)用链表组织类对象C)用抽象类指针指向派生类对象D)用抽象类指针构造派生类对象链表答案:D解析:[单选题]11.若用数组名作为函数调用的实参,传递给形参的是________。A)数组的首地址B)数组中第一个元素的值C)数组中的全部元素的值D)数组元素的个数答案:A解析:[单选题]12.递归算法必须包括·A)递归部分B)终止条件和递归部分C)迭代部分D)终止条件和迭代部分答案:B解析:[单选题]13.以下哪些情况适合使用内联函数()。A)函数体含有循环语句B)函数体含有递归语句C)函数代码少、频繁调用D)函数代码多、不常调用答案:C解析:[单选题]14.以下情况中适宜采用内联函数的是:A)函数代码小,频繁调用B)函数代码多,频繁调用C)函数体含有递归语句D)函数体含有循环语句答案:A解析:[单选题]15.下列函数不能和函数voidprint(char)构成重载的是()A)intprint(int);B)voidprint(char,char);C)intprint(char);D)voidprint(int,int);答案:C解析:[单选题]16.关于用const定义的常变量,下列叙述错误的是________。A)定义常变量时必须进行初始化B)每个常变量都有其特定的数据类型C)常变量在使用前必须先进行定义D)常变量定义之后可以被改变答案:D解析:[单选题]17.关于delete运算符的下列描述中,()是错误的。A)它必须用于new返回的指针;B)使用它删除对象时要调用析构函数;C)对一个指针可以使用多次该运算符;D)指针名前只有一对方括号符号,不管所删除数组的维数。答案:C解析:[单选题]18.快速排序在下列哪种情况下最易发挥其长处。A)被排序的数据中含有多个相同排序码B)被排序的数据已基本有序C)被排序的数据完全无序D)被排序的数据中的最大值和最小值相差悬殊答案:C解析:[单选题]19.下面不正确的字符常量是_____。A)?a?B)'\''C)'A'D)''答案:A解析:[单选题]20.从具有n个结点的二叉搜索树中搜索一个元素时,在最坏情况下进行成功搜索的时间复杂度为A)O(n)B)O(1)C)O(log2n)D)O(n^2)答案:A解析:[单选题]21.下面程序输出的结果是()。Intmain(){inti;inta[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)cout<<a[2-i][i];return0;}A)159B)753C)357D)591答案:B解析:[单选题]22.在多继承的构造函数定义中,几个基类构造函数用()分隔A)冒号B)分号C)逗号D)空格答案:B解析:[单选题]23.HTTP属于网络模型中的那一层A)应用层B)传输层C)网络层D)数据链路层答案:A解析:[单选题]24.若有定义char*st="howareyou";下列程序段中正确的是________。A)chara[11],*p;strcpy(p=a+1,&st[4]);B)chara[11];strcpy(++a,st);C)chara[11];strcpy(a,st);D)chara[],*p;strcpy(p=&a[1],st+2);答案:A解析:[单选题]25.长度为n的非空顺序表,若在第i个位置插入新的元素X,则i的取值范围是1≤i≤n+1,需要移动的元素个数为()A)iB)n-i-1C)n-iD)n-i+1答案:D解析:[单选题]26.下面关于异常机制说法错误的是()。A)抛出异常的地方和处理异常的地方可以不在同一层,即可以不在同一函数中发生B)系统在处理异常的层次关系时是自动按调用链查找的C)在同一个位置可以抛出属于不同层级的异常D)当最高层级处仍找不到匹配的异常处理时,系统就忽略这个异常答案:D解析:[单选题]27.若MyClass是一个类名,且有如下语句序列MyClassc1,*c2;MyClass*c3=newMyClass;MyClass&c4=c1;上面的语句序列所定义的类对象的个数是()A)1B)2C)3D)4答案:B解析:[单选题]28.TCP/UDP属于网络模型中的那一层A)应用层B)传输层C)网络层D)数据链路层答案:B解析:[单选题]29.下列关于重载函数的说法中正确的是:A)重载函数必须具有不同的函数值类型B)重载函数形参个数必须不同C)重载函数必须有不同的形参列表D)重载函数名可以不同答案:C解析:[单选题]30.若有以下标志符定义: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。[单选题]31.下列有关类继承的叙述中,错误的是________。A)继承可以实现软件复用B)虚基类可以解决由多继承产生的二义性问题C)派生类构造函数要负责调用基类的构造函数D)派生类没有继承基类的私有成员答案:D解析:[单选题]32.已知在一程序中已定义函数doubleMak(intm,doublen);则下列函数中不可在同一程序中重载的是________。A)doubleMak(intn);B)doubleMak(intm,intn);C)intMak(intm,doublen);D)doubleMak(doublem,intn);答案:C解析:[单选题]33.下面的变量说明中()是正确的。A)char:a,b,c;B)chara,b,c;C)chara,b,c。D)chara;b;c;答案:B解析:[单选题]34.能够把指定长度的字节序列插入到输出流中的函数是()。A)putB)writeC)coutD)print答案:B解析:[单选题]35.总体说明:40题,每题2分,编程题3题,每题15分,总分125分,最终折算成100分C++对C语言做了很多改进,下列描述中______使得C语言发生了质变,即从面向过程变成面向对象。A)增加了一些新的运算符B)允许函数重载,并允许设置默认参数C)规定函数说明必须用原型D)引进类与对象的概念答案:D解析:[单选题]36.s1和s2是两个结构类型变量,若要赋值s1=s2合法,则它们的说明应该是()。A)s1只能接受相同类型的数据成员B)结构中的成员相同C)同一结构类型的变量D)存储字节长度一样的变量答案:C解析:[单选题]37.下列枚举符号中,用来定位文件开始位置的是________。A)ios_base::endB)ios_base::begC)ios_base::outD)ios_base::cur答案:B解析:[单选题]38.若有如下函数声明:voidFun(intx);,则下列()能与该函数进行重载。A)voidFun(inty);B)voidFun(intx,inty='1');C)intFun(intx);D)voidFun(int)const;答案:B解析:[单选题]39.在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是()。A)地址传递B)单向值传递C)由实参传形参,再由形参传实参D)传递方式由用户指定答案:B解析:[单选题]40.以下程序的输出结果是()。f(intb[],intm,intn){inti,s=0;for(i=m;i<n;i=i+2)s=s+b[i];returns;}main(){intx,a[]={1,2,3,4,5,6,7,8,9};x=f(a,3,7);printf(""%d\n"",x);}"A)10B)18C)8D)15答案:A解析:[单选题]41.已知intx=5;执行下列语句后,x的值为()。x+=x-=x*x;A)25B)40C)-40D)20答案:C解析:[单选题]42.已知类A是类B的友元,类B是类C的友元,则()A)类A一定是类C的友元B)类C一定是类A的友元C)类C的成员函数可以访问类B的对象的任何成员D)类A的成员函数可以访问类B的对象的任何成员答案:C解析:[单选题]43.设存在函数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解析:[单选题]44.循环队列A[0..m-1]存放其元素值,用front和rear分别表示队头和队尾,则当前队列中的元素数是A)(rear-front+m)%mB)rear-front+1C)rear-front-1D)rear-front答案:A解析:[单选题]45.变量的指针,其含义是指该变量的________。A)值B)地址C)名D)一个标志答案:B解析:[单选题]46.为了取代C中带参数的宏,在C++中使用()。A)重载函数B)内联函数C)递归函数D)友元函数答案:B解析:[单选题]47.有如下程序:intf1();staticintf2();classA{public:intf3();staticintf4();};在所描述的函数中,具有隐含的this指针的是________。A)f1B)f2C)f3D)f4答案:C解析:[单选题]48.引入友元的主要目的是为了()。A)增强数据安全性B)提高程序的可靠性C)提高程序的效率和灵活性D)保证类的封装性答案:C解析:[单选题]49.不能作为函数重载的判断依据的是()A)constB)返回类型C)参数个数D)参数类型答案:B解析:实现函数的重载必须满足下列条件之一:(1)参数表中对应的参数类型不同。(2)参数表中参数个数不同。用const修饰传递参数,意思是通知函数,它只能使用参数而无权修改它,可以作为函数重载的判断依据。返回类型不能作为函数重载的依据。故本题选B。[单选题]50.下面关于C++流的叙述中正确的是()。A)cin是一个输入流对象B)可以用ifstream定义一个输出流对象C)执行语句序列char*y="PQMN";cout<D)执行语句序列charx[80];cin.getLine(x,80);时,若键入Happynewyear则x中的字符串是"Happy"答案:A解析:[单选题]51.已知一个栈的入栈序列是m,n,x,y,z,则不可能出现的出栈顺序是A)mnxyzB)xnyzmC)nymxzD)nmyzx答案:C解析:[单选题]52.以下成员函数哪个表示纯虚函数?()A)virtualintvf(int)B)voidvf(int)=0C)virtualvoidvf()=0D)virtualvoidvf(int){}答案:C解析:[单选题]53.在学习插入排序时,下面和其平均时间复杂度相同的是A)冒泡排序B)希尔排序C)快速排序D)以上说法都不正确答案:A解析:[单选题]54.设intx=1,y=1;表达式(!x||y--)的值是()A)0B)1C)2D)-1答案:B解析:!x为假,y--,先使用y=1为真,整个表达式为真.然后y自减1[单选题]55.友员的作用之一是()A)提高程序的运行效率B)加强类的封装C)实现数据的隐蔽性D)增加成员函数的种类答案:A解析:[单选题]56.下列描述错误的是()A)在创建对象前,静态成员不存在B)静态成员是类的成员C)静态成员不能是虚函数D)静态成员函数不能直接访问非静态成员答案:A解析:[单选题]57.当宏定义需要定义多行代码时,会使用下列哪个符号()A)|B)/C)\D)-答案:C解析:第2部分:多项选择题,共6题,每题至少两个正确答案,多选或少选均不得分。[多选题]58.对于折半查找方法,下面的说法正确的是A)折半查找方法不适用于按值有序链接的链表的查找B)折半查找方法适用于按值有序的顺序表的查找C)折半查找方法适用于按关键字值大小有序排列的顺序文件的查找D)折半查找方法适用于排序连续顺序文件的查找答案:BCD解析:[多选题]59.关于循环队列下列叙述中不正确的是A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C)循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D)循环队列中元素的个数是由队头指针和队尾指针共同决定答案:ABC解析:[多选题]60.根据先序序列ABDEC和中序序列BDEAC确定对应的二叉树,关于该二叉树的说法正确的是A)是完全二叉树B)不是完全二叉树C)不是满二叉树D)是满二叉树答案:AC解析:[多选题]61.下面对函数的形参和实参的说法正确的是()。A)形参只有在函数内部有效B)实参和形参在数量上,类型上,顺序上应严格一致C)函数调用中发生的数据传送是单向的,即只能把实参的值传给形参D)实参给形参传值时,不需要给形参分配内存单元答案:ABC解析:[多选题]62.数据结构的栈在()中有所应用。A)递归调用B)函数调用C)表达式求值D)前三个选项都有答案:ABCD解析:[多选题]63.不是栈中元素出入原则的是A)先进先出B)后进先出C)栈空则进D)栈满则出答案:ACD解析:第3部分:填空题,共6题,请在空白处填写正确答案。[填空题]64.假设inta=1,b=2;则表达式(++a/b)*b--的值为___。答案:2解析:[填空题]65.假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为()。答案:AB::bB解析:[填空题]66.语句序列ifstreaminfile;infile.open(?data.dat?);的功能可用一个语句实现,这个语句是___。答案:ifstreaminfile(?data.dat?);解析:[填空题]67.变量分为全局和局部两种,()。变量没有赋初值时,其值是不确定的。答案:全局变量默认初始化为0解析:第4部分:判断题,共11题,请判断题目是否正确。[判断题]68.缺省参数只能从后向前的替代缺省的实参值答案:对解析:[判断题]69.在初始数据表已经有序时,快速排序算法的时间复杂度为O(nlog2n)A)正确B)错误答案:错解析:[判断题]70.进行折半搜索的表必须是顺序存储的有序表A)正确B)错误答案:对解析:[判断题]71.类的公有成员函数是类与外界的接口答案:对解析:[判断题]72.函数参数传递过程中实参类型需要与形参相同()A)正确B)错误答案:对解析:[判断题]73.字符串在内存中的起始地址成为字符串的指针,可以定义一个字符指针变量指向一个字符串。()A)正确B)错误答案:对解析:[判断题]74.C++中带默认参数值的函数也可以重载。A)正确B)错误答案:错解析:[判断题]75.栈和队列的存储方式既可是顺序方式,也可是链接方式A)正确B)错误答案:对解析:[判断题]76.由3个结点所构成的二叉树有4种形态A)正确B)错误答案:错解析:[判断题]77.编译链接的过程包含预编译、编译、汇编、链接四个过程的说法是否正确A)正确B)错误答案:对解析:[判断题]78.for循环中,循环变量的作用域是该循环的循环体内。A)正确B)错误答案:错解析:第5部分:问答题,共20题,请在空白处填写正确答案。[问答题]79.在C++中,一个int型数据与一个double型数据相加,则结果是()类型。在C++中,一个int型数据与一个float型数据相加,则结果是()类型。答案:double|double解析:[问答题]80.在Win32下char,int,float,double各占多少位?答案:(1)Char占用8位(2)Int占用32位(3)Float占用32位(4)Double占用64位解析:[问答题]81.有一天,一位百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,陌生人对百万富翁说:?我每天给你10万元,而你第一天只需给我1分钱,第二天我仍给你10万元,你给我2分钱,第三天我仍给你10万元,你给我4分钱⋯⋯。你每天给我的钱是前一天的两倍,直到满一个月(30天)为止?,百万富翁很高兴,欣然接受了这个契约。请编程计算在这一个月中陌生人总计给百万富翁多少钱,百万富翁总计给陌生人多少钱。**输入提示信息和数据格式:无**输出提示信息和数据格式:cout<<"百万富翁给陌生人:"<<toStranger<<"元"<<endl;cout<<"陌生人给百万富翁:"<<toRichman<<"元"<<endl;答案:#include<iostream>usingnamespacestd;intmain(){doubletoStranger=0.01,toRichman=0;for(inti=1;i<=30;i++){toStranger*=2;toRichman+=100000;}cout<<"百万富翁给陌生人:"<<toStranger<<"元"<<endl;cout<<"陌生人给百万富翁:"<<toRichman<<"元"<<endl;}解析:[问答题]82.下面的程序中,有错误的语句是__________。classA//①{public://②A(){func();//③}virtualvoidfunc()=0;//④};答案:在成员函数内可以调用纯虚函数,但在构造函数或析构函数内调用一个纯虚函数将导致程序运行错误,因为没有为纯虚函数定义代码。答案为:③解析:[问答题]83.C++中,一个float类型的变量占__1__个字节。(填空题)答案:4;解析:[问答题]84.下列程序的输出结果是________。#includeusingnamespacestd;intmain(){inti,t;inta[]={70,1,0,4,8,12,65,-76,100,-45,35};for(i=0;ia[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}cout答案:65解析:[问答题]85.C++程序总是从()函数开始执行的。答案:main解析:[问答题]86.若有定义语句:inta=3,b=2,c=1;,则表达式a<b?a:b的值是__1__。(填空题)答案:2;解析:[问答题]87.引用与指针有什么区别?答案:1)引用必须被初始化,指针不必。2)引用初始化以后不能被改变,指针可以改变所指的对象。3)不存在指向空值的引用,但是存在指向空值的指针解析:[问答题]88.运行下列程序的结果为_______________。#include<iostream.h>intfun(int,int);voidmain(){cout<<"n="<<fun(0,0)<<endl;}intfun(intn,ints){ints1,n1;s1=s+n*n;if(s1<100){n1=n+1;fun(n1,s1);}elsereturnn-1;}答案:解析:[问答题]89.在C++程序中,如果需要控制l输出格式,则应包含哪个头文件?答案:iomanip解析:[问答题]90.下列语句的作用是(如果a大于b,将a,b的值互换)。if(){t=a;a=b;b=t;}如果a大于b,将a,b的值互换,写出语句if(){t=a;a=b;b=t;}答案:a>b|a>b解析:[问答题]91.读程序写结果或者程序填空。#include<iostream.h>classA{constinti;int&j;public:A(int&var):i(10),j(var){}voidshow(){cout<<"i:"<<i<<endl<<"j:"<<j<<endl;}};voidmain(){intx=1;Aa1(x);a1.show();}答案:本题主要考查对符号常量和引用的理解。常量是不能被赋值的,一旦初始化后,其值就永不改变,引用变量也是不可重新指派的,初始化后,其值就固定不变了。结果为:i:10j:1解析:[问答题]92.在一个C++程序文件中,若要包含另外一个头文件或程序文件,则应使用以___标识符开始的预处理命令。答案:#include解析:嵌入指令:#include可简单理解为:嵌入即包含。[问答题]93.改错题:以下程序中有一处错误,请抄写有错误的语句并指出错误原因。1/1文字题#include<iostream.h>classf{private:intx,y;public:f1(){x=0;y=0;}print(){cout<<x<<〃<<y<<endl;}}main(){fa;a.f1(1,1);a.print();}答案:a.f1(1,1);错误f1()调用时实参与形参数量不一致。解析:在C++语言中,可以在声明函数时指定形参,在调用函数时调用实参。函数中实参与形参的类型应保持一致。[问答题]94.下列程序用不同的方法访问数组元素,实现数组元素逆序输出。#include<stdio.h>#defineN100intmain(void){inti,n=10,a[N];int*p=a;for(i=0;i<n;i++)scanf("%d",a+i);printf("方法1:用数组名/偏移量法引用数组元素\n");for(i=n-1;i>=0;i--)printf(_____________________________);printf("\n");printf("方法2:用指针/偏移量法引用数组元素\n");for(i=n-1;i>=0;i--)printf(___________________________);printf("\n");printf("方法3:用数组/下标法引用数组元素\n");for(i=n-1;i>=0;i--)printf(_____________________________);printf("\n");printf("方法4:用移动指针法引用数组元素\n");for(________________________)printf("%d",*p);printf("\n");return0;}答案:第一空:"%d",*(a+i)第二空:"%d",*(p+i)第三空:"%d",p[i]第四空:p=a+n-1;p>=a;p--解析:[问答题]95.设计一个Bank类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。解:Bank类包括私有数据成员top(当前账指针),date(日期),money(金额),rest(余额)和sum(累计余额)。有三个成员函数bankin()(处理存入账),bankout()(处理取出账)和disp()(输出明细账)请完成函数的实现。本题程序如下:#include<stdio.h>#include<string.h>#defineMax100classBank{inttop;chardate[Max][10];//日期intmoney[Max];//金额intrest[Max];//余额staticintsum;//累计余额public:Bank(){top=0;}voidbankin(chard[],intm){…}voidbankout(chard[],intm){…}voiddisp(){…};};答案:1)strcpy(date[top],d);money[top]=m;sum

温馨提示

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

评论

0/150

提交评论