版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C++)机试模拟试卷23(共9套)(共371题)国家二级(C++)机试模拟试卷第1套一、选择题(本题共38题,每题1.0分,共38分。)1、结构化程序设计的基本原则不包括()。A、多态性B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。2、下列关于栈的叙述正确的是()。A、栈按“先进先出”组织数据B、栈按“先进后出”组织数据C、只能在栈底插入数据D、不能删除数据标准答案:B知识点解析:栈是按“先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。3、有如下类定义:classB{public:voidfun1(){}private:voidfun2(){}protected:voidfun3(){}};classD:publicB{protected:voidfun4(){}};若obj是类D的对象,则下列语句中不违反访问控制权限的是()。A、obj.fun1();B、obj.fun2();C、obj.fun3();D、obj.fun4();标准答案:A知识点解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。所以在本题中,在类外引用成员函数时,派生对象只能引用基类的公用成员函数fun1,故本题答案为A。4、内部格式控制操作函数是在头文件()中定义的。A、iostream.hB、iomanip.hC、istream.hD、ostream.h标准答案:B知识点解析:C++语言中,除了ios类成员函数之外,还提供了另一种YO格式化方法,即操作符。所有不带形参的操作符都定义在iostreamh中,而带形参的操作符则定义在头文件iomanip.h中。5、下列不能作为类的成员的是()。A、自身类对象的指针B、自身类对象C、自身类对象的引用D、另一个类的对象标准答案:B知识点解析:类的定义,如果有自身类对象,会使其循环定义,选项B错误。在类中具有自身类的指针,可以实现链表的操作,当然也可以使用对象的引用,类中可以有另一个类的对象,即成员对象。6、下列有关继承和派生的叙述中,正确的是()。A、如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员B、派生类的成员函数可以访问基类的所有成员C、基类对象可以赋值给派生类对象D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类标准答案:D知识点解析:私有继承方式为基类的公用成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有,但派生类对象可以访问基类的保护成员,所以基类对象不能赋值给派生类对象。抽象类是指含有纯虚拟函数的类,所以选项D正确。7、下列程序执行后,屏幕的输出是()。#includeusingnamespacestd;voidswap(intx,intY){Inttemp=x;x=y;y=temp;cout<<"x="<A、x=3,y=2x=3,y=2B、x=2,y=3x=3,y=2C、x=2,y=3x=2,y=3D、x=3,y=2x=2,y=3标准答案:B知识点解析:C++中默认的参数传递是值传递,也就是将实参的副本传递给被调用函数的形参,被调用的函数中对形参的任何改动都不会影响实参。8、对数组名作函数的参数,下面描述正确的是()。A、数组名作函数的参数,调用时将实参数组复制给形参数组B、数组名作函数的参数,主调函数和被调函数共用一段存储单元C、数组名作参数时,形参定义的数组长度不能省略D、数组名作参数,不能改变主调函数中的数据标准答案:B知识点解析:数组作为参数实参传递的赴数组的首地址。所以主调函数和被调函数共用一段存储单元。9、有如下程序:#include<iostream>usingnamespacestd;classSample{friendlongfun(Samples);public:Sample(longa){x=a;}private:longx;};longfun(Samples){if(s.x<2)return1;returns.x*fun(Sample(s.x-1));}intmain(){intsum=0;for(inti=0;i<6;i++){sum+=fun(Sample(i));}cout<<sum:return0;}执行这个程序的输出结果是()。A、120B、16C、154D、34标准答案:C知识点解析:本题考查默认构造函数,当i=0、1时,fun(Sample(i))为1;当i=2时,fun(Sample(i))为2;当i=3时,fun(Sample(i))为6;当i=4时,fun(Sample(i))为24;当i=5时,fun(Sample(i))为120。所以总和为154。10、有如下类的定义。横线处的语句是()。classMyClass{public:MyClass(inta=0,intb=0){X=a;Y=b:}voidChangeoconst{X-=10;Y+=10;}private:intX,Y;};A、staticB、constC、mutableD、不需要填入内容标准答案:C知识点解析:C++中const关键字用来表示一个常量,同时const也用来修饰函数。这两个概念需要明确:const所修饰的函数只能是类的成员函数,因为const所修饰的函数中,要由编译器负责保护类的成员变量不被修改。而相对的,mutable则是用来修饰类的成员变量,让该变量在const所修饰的成员函数中可以被修改。而且const修饰的函数只能是类的成员函数,mutable修饰的变量只能是类的成员变量。11、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、交C、除D、并标准答案:C知识点解析:如果S=T/R,则S称为T除以R的商。在除运算中S的域由T中那些不出现在R中的域所组成,对于S中的任一有序组,由它与关系R中每个有序组所构成的有序组均出现在关系T中。所以本题选择C)。12、下列关于虚基类的描述,错误的是()。A、设置虚基类的目的是为了消除二义性B、虚基类的构造函数在非虚基类之后调用C、若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用D、若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数标准答案:B知识点解析:虚基类的引入就是为了消除二义性,其构造函数的调用仍然是按照继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构造函数先于非虚基类的构造函数执行。13、下列关于C++函数的说明中,正确的是()。A、内联函数就是定义在另一个函数体内部的函数B、函数体的最后一条语句必须是return语句C、标准C++要求在调用一个函数之前,必须先声明其原型D、编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式标准答案:C知识点解析:此题考查的是有关函数的概念。内联函数是在函数定义之前加关键字inline来声明的函数,而不是定义在另一个函数体内部的函数,故选项A)错误;无返回值的函数在执行完最后一条语句后,会自动返回而不必加入return语句,故选项B)错误;如果函数只是返回值类型不同,而其他完全相同,则不能作为函数重载来使用。14、某系统结构图如下图所示(n≥5)该系统结构图的最大扇出数是()。A、nB、3C、2D、n+1标准答案:A知识点解析:模块的扇出是指本模块的直属下层模块的个数,或者说是由一个模块直接调用的其他模块数。题干中某系统为一个模块,其扇出数目为n(n≥5),功能2模块扇出数为3,功能n模块扇出数为2,则该系统结构图的最大扇出数是n。故本题答案为A选项。15、下列关于类模板的叙述中,正确的是()。A、类模板实例化时,编译器会根据给出的模板实参生成一个类B、类模板中的成员函数没有返回值C、类模板的主要作用是生成抽象类D、类模板中的数据成员具有同样类型标准答案:A知识点解析:类模板在引用实际模板类类型时实例化,编译器会根据给出的模板实参生成一个类的定义,选项A正确;类模板中的成员函数同普通类的成员函数一样,也可以有返回值,返回值类型可以是模板形参类型,也可以是具体类型,选项B错误;类模板的主要作用是生成类,而不是生成抽象类,选项C错误;类模板中的成员类型可以是模板形参类型,也可以是具体类型,选项D错误。本题答案为A选项。16、要利用C++流进行文件操作,必须在程序中包含的头文件是()。A、iomanipB、fstreamC、strstreamD、cstdlib标准答案:B知识点解析:iomanip是I/O流控制头文件;strstream是输入输出字符串流头文件;cstdlib是常用函数库,提供一些函数和符号常量;选项A、C、D错误;fstream是输入输出文件流头文件,答案为B。17、下列关于运算符重载的描述中,错误的是A、通过运算符重载不可能在C++中创建新的运算符B、赋值运算符可以重载为友元函数C、运算符函数重载为类的成员函数时,第一操作数不出现在参数表中D、重载类型转换运算符时不需要声明返回类型标准答案:B知识点解析:本题考查运算符重载,重载运算符不能定义新的运算符,C++规定=,[],(),->这四个运算符只能被重载为类的非静态成员函数,其他的可以被友元重载,主要是因为其他的运算符重载函数都会根据参数类型或数目进行精确匹配,这四个不具有这种检查的功能,用友元定义就会出错,所以本题选择B。18、每个C++程序中都必须有且仅有一个()。A、类B、预处理命令C、主函数D、语句标准答案:C知识点解析:每个C++程序中都要有且仅有一个主函数,该函数是程序的入口,而语句、预处理命令和函数及类在程序中都可以有多个。19、下列关于模板的表述中,错误的是A、模板形参表的两边使用尖括号括起来B、模板以关键字template开始C、模板声明中的关键字class都可以用关键字typename替代D、模板的形参表中可以有多个参数标准答案:C知识点解析:模板定义以关键字template开始,后接模板形参表,模板形参表是用尖括号括住的一个或多个模板形参的列表,形参之间用逗号分隔,选项A、B、D正确;至于选项C,一般关键字class和typename在模板形参表中,是没有区别的,但是关于类模板,类定义的关键字也是class,这里class是不可用typename替代的,答案为C。20、下列数据结构中,能用二分法进行查找的是()。A、无序线性表B、线性链表C、二叉链表D、顺序存储的有序表标准答案:D知识点解析:二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。21、为类MyClass重载赋值运算符时,应将其重载为类的A、静态函数B、成员函数C、友元函数D、虚函数标准答案:B知识点解析:重载赋值运算符是为了操作类的对象,静态函数不满足,选项A错误;如果类中没有重载赋值运算符,编译器将根据需求合成一个赋值运算符,所以重载赋值运算符必须是类的成员函数,以便编译器可以知道是否需要合成,选项C错误;赋值运算符不是虚函数,因为虚函数必须在基类和派生类中具有同样的形参,基类的赋值运算符有一个形参是自身类类型的引用,如果该运算符是虚函数,则每个派生类都将有一个虚函数成员函数,该成员函数定义了其中一个参数为基类对象的operator=,可能会令人混淆,选项D错误;答案为B。22、有如下程序:intx=3;do{x-=2;cout<A、1B、30C、1-2D、死循环标准答案:C知识点解析:本题考查do...while语句,执行do...while语句时,先执行循环体内的语句,然后判断while中表达式的值,表达式为非零时,返回重新执行循环体语句。在本题中,先执行循环体内的语句,输出1,然后判断表达式,为非零,且此时x为0;再次执行循环体时,输出-2,然后判断表达式为0,不执行,退出,所以答案为C。23、有如下类定义:classPoint{intxx,yy;public:Point():xx(0),yy(0){}Point(intx,inty=0):xx(x),yy(y){}};若执行语句Pointa(2),b[3],*c[4];则Point类的构造函数被调用的次数是()。A、2次B、3次C、4次D、5次标准答案:C知识点解析:本题考查默认构造函数和带参数的构造函数,题目中定义一个对象a(2)以及对象数组b[3],共执行4次构造函数,对象指针不调用构造函数。所以本题答案为C。24、有如下两个类定义:classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;protected:doubley2;public:doubley3;};在类YY中保护成员变量的个数是()。A、1B、2C、3D、4标准答案:C知识点解析:本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,所以基类的成员x2、x3变成了保护成员,派生类中的y2也是保护成员,所以共有3个保护成员。本题答案为C。25、下列关于算法复杂度叙述正确的是A、最坏情况下的时间复杂度一定高于平均情况的时间复杂度B、时间复杂度与所用的计算工具无关C、对同一个问题,采用不同的算法,则它们的时间复杂度是相同的D、时间复杂度与采用的算法描述语言有关标准答案:B知识点解析:算法的时间复杂度是指执行算法所需要的计算工作量,它与使用的计算机、程序设计语言以及算法实现过程中的许多细节无关,B选项正确,D选项错误。最坏情况下的时间复杂度可以与平均情况的时间复杂度相同,A选项错误。不同的算法时间复杂度一般不相同,C选项错误。26、对于一个类定义,编译器可能会自动生成的函数不包括A、复制构造函数B、缺省的构造函数C、析构函数D、友元函数标准答案:D知识点解析:C++中,对于一个类定义,编译器可能会自动生成的函数有:默认(缺省)构造函数,复制构造函数,复制运算符,析构函数,答案为D。27、有如下程序:#include#includeusingnamespacestd;classMyBag{public:friendintNancyShow(MyBag&bag);MyBag(stringbr="ABC"):brand(br){}private:stringbrand;};intNancyShow(MyBag&bag){if(bag.brand!="Coach")return1;elsereturn0;}intmain(){intcount=0;MyBagarrays[3]={MyBag("CityLife"),MyBag("Coach")};for(inti=0;i<3;i++)count+=NancyShow(arrays[i]);cout<A、0B、1C、2D、3标准答案:C知识点解析:本题考查构造函数,可以看出本题中是要统计对象数组arrays中有多少个brand不为的Coach元素,定义的对象数组中有两个不是Coach元素,所以答案为2,C选项正确。28、有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<"A";}~A(){cout<<"~A";}};classB:publicA{A*p;public:B(){cout<<"B";p=newA();}~B(){cout<<"~B";deletep;}};intmain(){Bobj;return0;}执行这个程序的输出结果是()。A、BAA~A~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A标准答案:B知识点解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数。对象释放时,先执行派生类的析构函数,再执行基类的析构函数。所以本题答案为B。29、设变量x和y为整型变量,若有函数调用为"fun(&x,&y)",则下列选项中,能够作为函数fun原型声明的是A、voidfun(int&a,int&b);B、voidfun(int&a,int*b);C、voidfun(int*a,int&b);D、voidfun(int*a,int*b)标准答案:D知识点解析:fun(&x,&y),函数调用参数列表中传递的是变量x,y的地址,所以函数原型声明的形参列表中参数应该是两个整型变量地址,A、B、C选项中都包含引用传递,不正确;答案为D。30、有如下类定义:classBase{intl;public:intm;private:intn;};classDerived:publicBase{};则类Derived所拥有的数据成员的个数是A、0B、1C、2D、3标准答案:D知识点解析:C++中派生类拥有基类的所有成员,所以Derived类中数据成员分别是:l、m、n,答案为D。31、有如下程序:#include#includeusingnamespacestd;classMyBag{public:friendintNancyShow(MyBag&bag);MyBag(stringbr="ABC"):brand(br){}private:stringbrand;};intNancyShow(MyBag&bag){if(bag.brand!="Coach")return1;elsereturn0;}intmain(){intcount=0;MyBagarrays[3]={MyBag("CityLife"),MyBag("Coach")};for(inti=0;i<3;i++)count+=NancyShow(arrays[i]);cout<A、0B、1C、2D、3标准答案:C知识点解析:本题考查构造函数,可以看出本题中是要统计对象数组arrays中有多少个brand不为的Coach元素,定义的对象数组中有两个不是Coach元素,所以答案为2,C选项正确。32、有如下程序:#include#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){cout<<’C’;}~TV(){cout<<’D’;}voidPrint()const{cout<A、CCC54DDDB、CCC54DDC、C54D、54标准答案:A知识点解析:本题考查构造函数相关知识,本题中定义一个对象room1,输出C,定义room2时输出CC,然后执行room3.Print时,输出54,最后执行三个析构函数输出DDD,所以答案为A。33、软件设计中模块划分应遵循的准则是()。A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。34、有如下类声明和函数声明classBase{intm;public:intn;protected:intp;};classDerived:protectedBase{public:intk;};voidf(Derivedd);则在函数f中通过d可访问的数据成员的个数是A、1B、2C、3D、4标准答案:A知识点解析:保护继承中,基类的public和protected成员在派生类中都是protected成员,所以类Derived中,public成员为:k,protected成员为:n、p,没有private成员,m对Derived不可见;Derived对象d可访问的只有public成员,即k;答案为A。35、在下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。A、外模式B、内模式C、概念模式D、逻辑模式标准答案:B知识点解析:数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,所以选择B。36、结构化程序所要求的基本结构不包括()。A、顺序结构B、GOTO跳转C、选择(分支)结构D、重复(循环)结构标准答案:B知识点解析:1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。37、结构化程序设计中,下面对goto语句使用描述正确的是A、禁止使用goto语句B、使用goto语句程序效率高C、应避免滥用goto语句D、以上说法均错误标准答案:C知识点解析:结构化程序设计中,要注意尽量避免goto语句的使用,故选C。38、有如下类声明:classHow{intk;public:~How(){cout<<"Bye";}};则类How所拥有的构造函数的数量是A、1B、2C、3D、4标准答案:B知识点解析:在类How定义中没有定义任何构造函数,所以编译器会自动生成一个默认构造函数,同时还生成复制构造函数,所以类How拥有两个构造函数,答案为B。二、基本操作题(本题共1题,每题1.0分,共1分。)39、请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR**********found**********”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:NUM=0Value=1注意:只修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。//proj1.cpp#inccludeusingnamespacestd;classMyClass{inti;friendVOidIncrement(MyClass&f);public:constintNUN;//ERROR********found********MyClass(inti=0){NUN=0;i=i;}intGetValue()const{returni;}};//ERROR********found********voidIncrement(){f.i++;}intmain(){NyClassobj;//ERROR****found****NyClass::Increment(obj);cout<<"NUN="<标准答案:(1)MyClass(inti=0):NUM(0){(2)voidIncrement(MyClass&f){f._i++;}(3)Increment(obj);知识点解析:(1)主要考查考生对常量数据成员初始化方法的掌握,常量数据成员的初始化只能通过构造函数的成员初始化列表进行,并且要使用关键字const修饰。该题的前一条语句constintNUM;,说明NUM是常量数据成员。(2)主要考查考生对友元函数的掌握,友元函数的定义与声明要一致,先看该友元函数的声明部分:friendvoidIncrement(MyClass&f);,返回类型为void,函数参数为MyClass&f;再比较出错的语句:voidIncrement(){f._i++;},错误在于该函数没有参数,应把MyClass&f填在括号内。(3)主要考查友元函数的调用,友元函数并不属于类,因此调用友元函数时不需要添加类名及作用域,只需要像调用普通函数一样即可。三、简单应用题(本题共1题,每题1.0分,共1分。)40、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。使sum(intn)能计算所有n的因子之和(不包括1和自身)。注意:不能修改程序的其他部分,只能补充sum函数。试题程序:#ineludeintsum(intn){}voidmain(){cout<标准答案:intall=0;for(inti=2;i知识点解析:为了实现计算所有n的因子之和且不包含1和自身,在函数中定义一个变量all来保存求和结果,并为最终结果在函数结束时返回。在循环中逐个寻找n的因子,为了在计算中排除掉1和n本身,因此循环变量i的变化范围为2~n-1。如果n%i==0,说明i是n的因子,因此将i加到all上。四、综合应用题(本题共1题,每题1.0分,共1分。)41、使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。(1)定义类的公有数据成员函数No、Name[32],其中No是int型的数据,Name[32]为字符型。请在注释1后添加适当的语句。(2)完成函数Set的定义,分别设置No和Name的值,请在注释2后添加适当的语句。(3)完成函数print,请在注释3后添加适当的语句,输出结果如下:No=12345Name=HelloWorld!(4)添加默认构造函数,设置No为0,Name为空,请在注释4后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#includeclassTC{public://******1******//******2******{No=no;for(inti=0;strNameEi]!=0;i++){Name[i]=strName[i];Name[i+1]=0;}}voidprint(){//********3********}TC(){//********3********}};intmain(){TCstu;stu.Set(12345,"HelloWorld!");stu.print();return0;}标准答案:(1)应添加“intNo;charName[32];”。(2)应添加“voidSet(intno,char*strName)”。(3)应添加“eout<<"No="((No<知识点解析:第1处要求“定义类的公有数据成员函数No、Name[32],其中No为int型,Name[32]为字符型”。在已有程序中类定义的public区域,定义变量No,Name[32],即在第1处添加语句“intNo;charName[32];”0第2处要求“完成函数Set的定义,分别设置No和Name的值”。在第2处说明函数Set的语句中,应该包括变量no,strName的定义,然后在函数中将其值赋值给NoName,即添加定义语句“voidSet(intno,char*StrName)”。第3处要求“完成函数print”,根据输出结果,知道输出的是No和Name的值,所以这里补全“cout<<"No="((No<国家二级(C++)机试模拟试卷第2套一、选择题(本题共37题,每题1.0分,共37分。)1、若变量都已正确说明,则以下程序段的输出结果是()a=2=b=3;printf(a>b?“***a=**%”;###b=%d”,a,b);A、没有正确的输出格式控制B、输出为:***a=2C、输}}{为:###b=2D、输出为:***a=2###b=2标准答案:C知识点解析:本题实际上是考查C语言中的格式化输入输出知识,同时本题也考查了三目表达式的知识。如果逻辑表达式为真,则执行冒号之前的,否则执行冒号之后的表达式。2、以下程序的执行结果是()。#inclu,declassTestClass2{public:TestClass2(){);TestClass2(inti,intj);voidprintb0;private:inta,b;};classTestClass1{public:TestClass1(){}TestClass1(inti;intj);voidprima();private:TestClass2c;};TestClass1::TestClass1(inti,intj):c(i,j){}voidTestClass1::printa0{c.,printb0;}TestClass2::TestClass2(inti,intj){a=i;b=j;}voidTestClass2::printb0{cout<<“a=”<A、a=7,b=8B、a=8,b=7C、a=7,b=9D、a=8,b=9标准答案:C知识点解析:由主函数main入手,定义了TestClassl的对象m,其中参数为7和9。“m.printa();”中TestClassl中printa为“c.printb();”,其中c为TestClass2的对象,所以printb为TestClass2中的“voidTestClass2::printb()”,即输出为“a=7,b=9”。3、执行语句:{cout<A、123******OKB、123######OKC、123********OK********D、123######OK######标准答案:B知识点解析:cout.fill()用于设置或返回输出的填充字符,默认是空格,fill()函数的设置一直有效,直到下一个fill()函数改变该值为止。setw(intn)作用是设置输入输出的宽度,此设置只对一次输入或输出有效,在完成一次数据的输入或输出后,宽度设置自动恢复为0。注意:默认为输出数据在指定宽度内右对齐。4、若有下面的函数调用:fun(a+b,3,max(n-1,b))则fun的实参个数是()。A、3B、4C、5D、6标准答案:A知识点解析:本题考查函数实参个数的基础知识,根据实参的概念,(a+b)、3、max(n—1,b)分别为其中的3个实参。故答案为A。5、在公有继承的情况下,允许派生类直接访问的基类成员包括()。A、公有成员B、公有成员和保护成员C、公有成员、保护成员和私有成员D、保护成员标准答案:B知识点解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。所以本题答案为B。6、下列情况中,不会调用拷贝构造函数的是()。A、用一个对象去初始化同一类的另一个新对象时B、将类的一个对象赋值给该类的另一个对象时C、函数的形参是类的对象,调用函数进行形参和实参结合时D、函数的返回值是类的对象,函数执行返回调用时标准答案:B知识点解析:本题考查复制构造函数,在以下3种情况下使用:①程序中需要新建立一个对象,并用另一个对象对它初始化;②函数的参数为类的对象;③函数的返回值是类的对象。其中B选项是由赋值运算符重载实现的。7、有如下程序:#include<iostream>usingnamespacestd;classObj{staticinti;public:obj(){i++;}~obj(){i--;}staticintgetVal(){returni;}};intobj::i=0;voidf(){objob2;cout<<ob2.getVal();}intmain(){objob1;f();obj*ob3=newobj;cout<<ob3->getVal();deleteoh3;cout<<obj::getVal();return0;}执行这个程序的输出结果是()。A、232B、231C、222D、221标准答案:D知识点解析:本题考查构造函数和析构函数的调用顺序,调用顺序为先构造的后析构,后构造的先析构。本题中先定义了一个对象ob1,会执行构造函数,那么i就变为了1;再执行函数f后,由于又定义了一个对象ob2,所以再次执行构造函数,i就变为了2,输出了2。函数执行完后执行析构函数,i变为了1,然后又定义了对象指针,i变为了2。释放ob3后,i变为了1,所以答案为D。8、设:二叉树如图所示,对该二叉树进行后序遍历的结果为()。A、EDBGHFCAB、ABDECFGHC、ACFGHBDED、GHFCAEDB标准答案:A知识点解析:先遍历左子树,然后遍历右子树,最后遍历访问根结点,各子树都是同样的递归遍历。9、下列有关继承和派生的叙述中,正确的是()。A、派生类不能访问基类的保护成员B、作为虚基类的类不能被实例化C、派生类应当向基类的构造函数传递参数D、虚函数必须在派生类中重新实现标准答案:C知识点解析:派生类可以访问基类的保护成员,而不能访问基类的私有成员。作为虚基类的类可以被实例化。虚函数如果没有派生类中重新实现,那么仍然使用基类的成员函数。10、对于一个类定义,下列叙述中错误的是()。A、如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B、如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函数C、如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D、如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数标准答案:B知识点解析:本题考查构造函数和复制构造函数,如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数,如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数。如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。11、下列叙述中正确的是()。A、对长度为n的有序链表进行查找,最坏情况下需要的比较次数为nB、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)标准答案:C知识点解析:二分法查找只适用于顺序存储的有序表,对于长度为n的有序线性表,最坏情况只需比较log2n次。12、有如下语句序列:charstr[10];cin>>str;当从键盘输入"Ilovethisgame"时,str中的字符串是()。A、”Ilovethisgame”B、”Ilovethi”C、”Ilove”D、”I”标准答案:D知识点解析:cin是C++预定义的标准输入流对象,cin用来接收字符串时,遇“空格”、“TAB”、“回车”时都会结束。所以本题答案为D。13、数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和()。A、编码设计B、测试阶段C、运行阶段D、物理设计标准答案:D知识点解析:数据库设计目前一段采用生命周期法,即将整个数据库应用系统的开分解成目标独立的若干阶段,它们是:需要分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。14、下列程序的输出结果是()。#includeusingnamespacestd;templateTfun(Ta,Tb){retur(a>=b)?a:b;}voidmain(){cout<A、6,3.14B、3,6.28C、3,3.14D、6,6.28标准答案:D知识点解析:“?:”为条件运算符,(a>=b)?a:b是当a大于b时取a,否则取b。所以第一个fun(3,6)调用中,6大于3,所以输出6,同理第二个fun(3.14E6.28F)调用中输出6.28。15、有如下程序:#includeusingnamespacestd;elassShape{//图形类public://图形绘制函数(用显示字母模拟)virtualvoiddraw()eonst{eout<<’S’;}};classCircle:publicShape{//圆形类public:voiddraw()eonst{eout<<’C’;}};voidplot(Shape&s){s.draw();}intmain(){Shape木ps=newCircle;Circlet;ps->draw();t.draw();plot(t);deleteps;retum0;}运行这个程序的输出是()。A、SCCB、SCSC、CSSD、CCC标准答案:D知识点解析:C++中,多态性调用需要满足两个条件,1、被调用成员函数必须是虚函数;2、必须通过基类类型的引用或指针进行函数调用。多态性使程序在运行时期根据指针或引用所指对象的类型来决定调用哪个函数。程序中,类shape定义了虚函数draw(),在派生类circle中重写了函数draw();main函数中,分别使用指针、对象、引用三种方式调用函数draw(),指针ps是基类指针,指向的是派生类的对象,所以这里根据多态性,将调用Circle中的draw函数,输出“C”;对象t是Circle对象,也调用Circle中的dmw函数,输出“C”;函数p10t()执行时引用s引用的是实参t,引用对象是派生类Circle对象,根据多态性,同样调用Circle中的draw函数,输出“C”;结果输出为“CCC”;答案为D。16、下列语句中,能够进行正确初始化的是()。A、charstr="abcde";B、char*str="abcde";C、charstr[4]="abcde";D、charstr[5]="abcde";标准答案:B知识点解析:选项A中,str是一个字符变量,不能用一个字符串初始化,错误;选项B中str是一个字符指针,使用字符串的首地址初始化,正确;选项C中str是一个字符数组,数组长度为4个字节,初始化的字符串有6个字符(包括结尾的空字符),长度不够,错误;选项D中str是一个字符数组,数组长度为5个字节,初始化的字符串有6个字符(包括结尾的空字符),长度不够,错误;本题答案为B。17、有两个关系R和S如下:则有关系R得到关系S的操作是A、选择B、投影C、自然连接D、并标准答案:A知识点解析:由关系R到关系S为一元运算,排除C和D。关系S是关系R的一部分,是通过选择之后的结果,因此选A。18、若MyClass是一个类名,且若MyClass是一个类名,且有如下语句序列MyClassc1,*c2;MyClass*c3=newMyClass;MyClass&c4=c1;上面的语句序列所定义的类对象的个数是语句序列A、1B、2C、3D、4标准答案:B知识点解析:本题考查对象的定义,定义一个类对象就需要占用空间,其中c1、c3都占用了空间,c2、c4为指针只占一个指针空间,所以B选项正确。19、下列关于信息系统的叙述中,错误的是()。A、广播/电视是一种双向的、点对多点的信息交互系统B、网络聊天是一种双向的,以信息交互为主要目的的系统C、电话是一种双向的、点对点的、以信息交互为主要目的的系统D、雷达是一种以感测和识别为主要目的的系统标准答案:A知识点解析:广播/电视是一种单向的、点对多点(面)的,以信息传递为主要目的的系统。20、下列情况中,不会调用拷贝构造函数的是()。A、用一个对象去初始化同一类的另一个新对象时B、将类的一个对象赋值给该类的另一个对象时C、函数的形参是类的对象,调用函数进行形参和实参结合时D、函数的返回值是类的对象,函数执行返回调用时标准答案:B知识点解析:此题考查的是复制构造函数的概念。用一个已知的对象初始化一个正在创建的同类对象时,就会发生复制构造函数。因此,选项A)、C)、D)均会调用复制构造函数,而只有选项B)没有创建的动作,不调用复制构造函数。二、基本操作题21、以下程序的输出结果是()。main(){inta=4,b=5,c=0,d;d=!a&&!b||!c;cout<<d<<endl;}A、lB、0C、非0的数D、-1标准答案:A知识点解析:本题考查逻辑运算,只要考生掌握了逻辑运算的优先级就可以正确得到答案为选项A)。或运算的优先级最高,&&和!!的优先级相同,按照从左到右的顺序计算。22、要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是A、fstreamB、istreamC、ostreamD、iomanip标准答案:D知识点解析:本题考查格式控制相关知识,属于基础知识,需要包含iomanip,所以D选项正确。23、在数据库设计中,将E-R图转换成关系数据模型的过程属于()。A、需求分析阶段B、概念设计阶段C、逻辑设计阶段D、物理设计阶段标准答案:C知识点解析:E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。24、下列字符串中可以用作C++标识符的是A、1481varB、test-1481C、trueD、_123标准答案:D知识点解析:用来表示变量、符号常量、函数、数组类型等实体名字的有效字符序列称为标识符,标识符由字母、数字、和下划线3种字符组成,且第一个字符必须为字母或者下划线。C选项为C++的特定标识符,只有D选项正确。25、下列叙述中正确的是A、循环队列中的元素个数随队头指针与队尾指针的变化而动态变化B、循环队列中的元素个数随队头指针的变化而动态变化C、循环队列中的元素个数随队尾指针的变化而动态变化D、以上说法都不对标准答案:A知识点解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数与队头指针和队尾指针的变化而变化,A正确。26、在数据库设计中,将E-R图转换成关系数据模型的过程属于()。A、需求分析阶段B、概念设计阶段C、逻辑设计阶段D、物理设计阶段标准答案:C知识点解析:E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于辑设计阶段。27、下列叙述中,错误的是A、true是一个逻辑型常量B、x是一个字符型常量C、100是一个int常量D、2.71828是一个double常量标准答案:B知识点解析:考查常量定义,B选项中"x"为一个字符串,’x’才是字符常量,所以B选项错误。28、软件设计中模块划分应遵循的准则是()。A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。29、当一个派生类对象结束其生命周期时,自动做的事情是A、先调用派生类的析构函数后调用基类的析构函数B、先调用基类的析构函数后调用派生类的析构函数C、如果派生类没有定义析构函数,则只调用基类的析构函数D、如果基类没有定义析构函数,则只调用派生类的析构函数标准答案:A知识点解析:执行派生类析构函数的顺序是:先执行派生类析构函数,再执行基类的析构函数,所以A选项正确。30、已知一程序运行后执行的第一个输出操作是cout<A、1234B、******1234C、**********1234D、1234******标准答案:B知识点解析:本题考查输入输出格式的控制,先是定义宽度为10个字符,然后填充字符,1234只有四个字符,所以要在左侧填充6个*,即输出******1234,B选项正确。31、当一个派生类对象结束其生命周期时,系统自动做的事情是A、先调用派生类的析构函数后调用基类的析构函数B、先调用基类的析构函数后调用派生类的析构函数C、如果派生类没有定义析构函数,则只调用基类的析构函数D、如果基类没有定义析构函数,则只调用派生类的析构函数标准答案:A知识点解析:派生类的对象结束生命周期时,系统先调用派生类的析构函数,然后按继承层次依次向上调用各个基类的析构函数,这是为了每次调用析构函数,都有完整的类对象与析构函数对应,当然如果某个类没有定义析构函数,编译器会自动合成对应的析构函数并调用之,答案为A。32、有如下程序:#includeusingnamespacestd;classObj{staticinti;public:Obj(){i++;}~Obj(){i--;}staticintgetVal(){returni;}};intObj::i=0;voidf(){Objob2;cout<getVal();deleteob3;cout<A、232B、231C、222D、221标准答案:D知识点解析:本题考查构造函数和析构函数的调用顺序,调用顺序为先构造的后析构,后构造的先析构。本题中先定义了一个对象ob1,会执行构造函数,那么i就变为了1;再执行函数f后,由于又定义了一个对象ob2,所以再次执行构造函数,i就变为了2,输出了2。函数执行完后执行析构函数,i变为了1,然后又定义了对象指针,i变为了2。释放ob3后,i变为了1,所以答案为D。33、有如下程序:#include#includeusingnamespacestd;classMyBag{public:MyBag(stringbr="ABC"):brand(br){cout<A、MyBagarrays[2];B、MyBag*arrays=newMyBag[2];C、MyBagarrays[2]={MyBag("ABC")};D、MyBagarrays[2]={MyBag("CityLife"),MyBag("Micky")};标准答案:D知识点解析:本题考查构造函数的应用,题目中A、B、C、D,都定义了包含两个元素的一维数组,A、B、C都执行题目中的构造函数,并且输出"ABCABC",而D选项中由于构造函数参数不为ABC,所以输出为"CityLifeMicky"34、有如下程序段:inti=0,j=1;int&r=i;//①r=j;//②int*p=&i;//③*p=&r;//④其中会产生编译错误的语句是()。A、④B、③C、②D、①标准答案:A知识点解析:本题考查指针和引用。①为引用,使用正确;④中&r表示一个地址,而*p已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。35、在为一个类重载下列运算符时,只能作为该类成员函数重载的运算符是A、+B、()C、<<D、++标准答案:B知识点解析:本题考查重载运算符,C++规定有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数。所以本题选B。36、if语句的语法格式可描述为:格式1:if(<条件>)<语句>或格式2:if(<条件>)<语句1>else<语句2>关于上面的语法格式,下列表述中错误的是()。A、<条件>部分可以是一个if语句,例如if(if(1a==0)…)…B、<语句>部分可以是一个if语句,例如if(…)if(…)…C、如果在<条件>前加上逻辑非运算符!并交换<语句1>和<语句2>的位置,语句功能不变D、<语句>部分可以是一个循环语句,例如if(…)while(…)…标准答案:A知识点解析:本题考查if语句,if语句的条件部分不能嵌套if语句,所以A选项错误;B选项就是if语句嵌套;C选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样;D选项也正确。37、在软件开发中,需求分析阶段产生的主要文档是()。A、软件集成测试计划B、软件详细设计说明书C、用户手册D、软件需求规格说明书标准答案:D知识点解析:需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择D。二、基本操作题(本题共1题,每题1.0分,共1分。)38、使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正程序中的错误,使该程序的输出结果为:100注意:错误的语句在//********error********的下面,修改该语句即可。1#include2statiCintx=50;3intt=0;4int*func(intx,inty,intz)s{6t=t+x+y+Z;7//********error********8returnt;9};10voidmain()11{12inty=30;13intx=10:。14intz=20;15//********error********16X=X;17//********error********18cout<标准答案:(1)return&t;(2)x=::x;(3)Cout<<*fune(x,y,z)<知识点解析:程序当中定义了全局静态变量x,主函数内又定义了一个和静态变量x重名的变量x,在使用时需要注意区分这两个变量。函数func(intx,inty,intz)返回一个整型数据指针,功能是将参数x,y,z三者求和,通过指针返回运算结果。[解题思路](1)由审题分析可知,函数func(intx,inty,intz)返回的是整型数据指针,而第1个标识下的retumt表示返回一个整型数据,和要求的返回数据类型不匹配,应改为“return&t:”。(2)第2个标识下x=x表示局部变量x自己给自己赋值,调用func(x,y,z)函数后,返回的运算结果是30+10+20=60,与输出100不同,而全局静态变量x值为50,30+50+20=100,刚好满足条件,因此第2个标识下是将全局静态变量x的值赋给局部变量x,即第2个标识下应该为“x=::x:”,“::”表示的是引用全局变量。(3)func(x,y,z)返回一个整型数据指针,通过该指针可以得到运算结果,而cout<三、简单应用题(本题共1题,每题1.0分,共1分。)39、下列给定程序中,函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串之后。例如,当s所指的字符串为“ABCDE”时,t所指的字符串应为“EDCBAABCDE”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#include#includevoidfun(char*s,char*t){/*********found*********/inti;sl=strlen(s);for(i=0;i标准答案:(1)inti,s1;(2)t[i]=s[s1—i—1];知识点解析:(1)变量s1没有定义。(2)该循环实现将s串中的字符逆序存入t串中,t[j]对应s串中的s[s1—i—1]。四、综合应用题(本题共1题,每题1.0分,共1分。)40、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)类CBase有一个常数变量Number1,在构造函数时对其初始化,请在注释∥********1********后添加适当的语句。(2)类CPri是CBaSe的公共继承类,请在注释∥********2********后添加适当的语句。(3)类CPri构造函数有两个形式参数,第一个是对CBase的初始化,第二个缺省为0,用来对变量Number2进行初始化。请在注释∥********3********后添加适当的语句。(4)类CPri的函数display()重载于CBase的打印函数。完成对变量Number2的输出,然后调用基类的打印函数,请在注释∥********4********后添加适当的语句。输出的内容如下:Number2=12Number=8注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeClassCBase{private:intNumber;public:∥********1********CBaSe(intx){}voiddisplay(){cout<<“Number=”<标准答案:(1)将“CBase(intx)”补充完整为:CBase(intx):Number(x)(2)将“classCPri”补充完整为:classCPri:publicCBase(3)将“CPri(intx,inty=0)”补充完整为:Cpri(intx,inty=0):CBase(x)(4)添加语句:cout<<“Number2=”<知识点解析:程序中定义了类CBase和类CPri,类CPri公有派生于类CBase,CBase中有成员变量Number,CPri有成员变量Number2,两个类均有display()函数来打印成员变量的值。国家二级(C++)机试模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、运算符重载是对已有的运算符赋予多重含义,因此()。A、可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义B、可以改变一个已有运算符的优先级和操作数个数C、只能重载C++中已经有的运算符,不能定义新运算符D、C++中已经有的所有运算符都可以重载标准答案:C知识点解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的c++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。2、下列关于基类和派生类关系的叙述中,正确的是()。A、每个类最多只能有一个直接基类B、派生类中的成员可以访问基类中的任何成员C、基类的构造函数必须在派生类的构造函数体中调用D、派生类除了继承基类的成员,还可以定义新的成员标准答案:D知识点解析:本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类的成员。如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数时,在派生类构造函数的定义中可以省略对基类构造函数的调用。所以本题答案为D。3、下列关于C++函数的叙述中,正确的是()。A、每个函数至少要具有一个参数B、每个函数都必须返回一个值C、函数在被调用之前必须先声明D、函数不能自己调用自己标准答案:C知识点解析:此题考查的是函数的性质。当调用无参函数时主函数并不将数据传送给被调函数,且可以带回或不带回函数值。函数的递归调用就是直接或间接的调用自己。4、下列选项中不属于软件生命周期开发阶段任务的是()。A、软件测试B、概要设计C、软件维护D、详细设计标准答案:C知识点解析:软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,其中开发阶段包括概要设计、详细设计、实现和测试。5、有如下说明:inta,[10]1={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()。A、*p+9B、*(p+8)C、*p+=9D、p+8标准答案:B知识点解析:本题考查指向数组的指针,本题中指针变量p指向数组a,那么水p的值就是1,即表示数组的第一个元素,那么数值为9的表达式就是将指针向后移动8个地址,即p+8指向的是数组元素值为9,所以数值为9的表达式是水(p+8)。6、以下不正确的是()。A、语句for(i=0;;i++)表示无限循环B、for(;;)表示无限循环C、for()表示无限循环D、while(1)表示无限循环标准答案:C知识点解析:选项C)是一个错误的for语句格式,for()语句中三个表达式可以省略。但是两个分号(;)不能省略。7、由于常对象不能被更新,因此()。A、通过常对象只能调用它的常成员函数B、通过常对象只能调用静态成员函数C、常对象的成员都是常成员D、通过常对象可以调用任何不改变对象值标准答案:A知识点解析:本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非const函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选A。8、设变量a和b已正确定义并赋初值,则a-=a+b等价的赋值表达式为()。A、a=a+(b-a)B、a=b-(a+b)C、-a=bD、a=-b标准答案:D知识点解析:本题考查运算符与赋值表达式。a-=a+b可表示为a=a-(a+b),也可化简成a=-b。9、关于运算符重载,下列表述中正确的是()。A、C++已有的任何运算符都可以重载B、运算符函数的返回类型不能声明为基本数据类型C、在类型转换符函数的定义中不需要声明返回类型D、可以通过运算符重载来创建C++中原来没有的运算符标准答案:C知识点解析:重载运算符的规则如下:①c++不允许用户自己定义新的运算符,只能对已有的c++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。10、下列关于运算符重载的叙述中,错误的是()。A、有的运算符可以作为非成员函数重载B、所有的运算符都可以通过重载而被赋予新的含义C、不得为重载的运算符函数的参数设置默认值D、有的运算符只能作为成员函数重载标准答案:B知识点解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。所以答案为B。11、在下列double型常量表示中,错误的是()。A、E15B、35C、3E5D、3E一5标准答案:A知识点解析:在C++中,科学计数法表示小数的方法:E(e)左右必须有数,且E(e)的右侧只能为整数。12、下述关于开关语句的描述中,正确的是()。A、开关语句中default子句可以没有,也可以有一个B、开关语句中每个语句序列中必须有break语句C、开关语句中default子句只能放在最后D、开关语句中ease子句后面的表达式可以是整型表达式标准答案:A知识点解析:在switch语句中default的位置不是固定在最后的位置,同时default也是可以省略。13、若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是()。A、Data+(Data);B、Dataoperator+(Data);C、Data+operator(Data);D、operator+(Data,Data);标准答案:B知识点解析:根据重载加法运算符的格式,只有B选项正确。14、负责数据库中查询操作的数据库语言是()。A、数据定义语言B、数据管理语言C、数据操纵语言D、数据控制语言标准答案:C知识点解析:数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。15、下列说法中错误的是()。A、公有继承时基类中的public成员在派生类中仍是public的B、公有继承时基类中的private成员在派生类中是public的C、私有继承时基类中的public成员在派生类中是private的D、保护继承时基类中的public成员在派生类中是protected的标准答案:B知识点解析:公有继承中,基类的公有成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。所以B是错误的,即选择B)。16、下列选项中,正确的C++表达式是()。A、a+b=b+cB、xyz+C、www++9D、a[3]标准答案:D知识点解析:A选项中,a+b是表达式,不可以作为左值;选项B中,运算符“+”作为一元运算符,应该放在操作数之前,返回操作数本身;作为二元运算符,必须作用于两个操作数之间;选项c中,运算符“++”是一元运算符,只能有一个操作数;答案为D。17、派生类的对象对它的基类成员中()是可以访问的。A、公有继承的公有成员B、公有继承的私有成员C、公有继承的保护成员D、私有继承的公有成员标准答案:A知识点解析:只要是派生类,都可以丛基类中继承,除非把基类的构造函数定义为私有的,这样派生类无法构造。18、同一概念在一处为实体而在另一处为属性或联系的冲突在视图集成中称为()。A、命名冲突B、概念冲突C、域冲突D、约束冲突标准答案:B知识点解析:同一概念在一处为实体,而在另一处为属性或联系的冲突称为概念冲突。19、软件设计中模块划分应遵循的准则是()。A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。20、下面的符号中可以用作C++标识符的是()。A、3testB、fcc~otherC、elseD、radius标准答案:D知识点解析:C++标识符是以字母、下划线开头的,由字母、数字及下划线组成的,不与关键字相同的字符串。选项C)中else为关键字。21、运算符函数调用格式的表达式“y/x++”与表达式“y.operator/(operator++(x,0))”的含义相同,由此可看出()。A、“/”和“++”都是作为成员函数重载的B、“/”和“++”都是作为非成员函数重载的C、“/”是作为成员函数重载的,“++”是作为非成员函数重载的D、“/”是作为非成员函数重载的,“++”都是作为成员函数重载的标准答案:C知识点解析:运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即y.operator*(z)或者operator*(y,z);另一种是通过运算符构成表达式,即y*z。因为“++”运算符既可以作为前缀运算符,又可以作为后缀运算符,所以重载这个运算符时,重载后缀“++”时必须多一个虚拟参数:mt。22、有如下程序:#include#includeusingnamespacestd;classInstrument{public:Instrument(stringt="乐器",stringn="无名"):type(t),name(n){}stri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公共事业销售人员工作总结
- 陕西省渭南市富平县2023-2024学年九年级上期末化学模拟试卷
- 礼品行业前台工作总结
- 烟酒店居民楼小区保安工作要点
- IT行业程序员工作总结
- 科技研发合同三篇
- 2022年河南省鹤壁市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2024年江西省赣州市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2021年浙江省衢州市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2021年浙江省金华市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 急性脑梗死诊治指南
- 大气污染与人体健康课件
- 检察院分级保护项目技术方案
- 土木工程建筑中混凝土裂缝的施工处理技术毕业论文
- 水电站工程地质勘察报告
- 电站屏柜改造安装二次工程施工组织设计
- DB42∕T 1795-2021 微动勘探技术规程
- 大润发的企业文化
- 儿童剧剧本─三只小猪
- 标书密封条格式模板大全(共33页)
- TROXLER3440核子密度仪
评论
0/150
提交评论