《历年计算机二级C++笔试试题及答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
2005年9月全国计算机等级考试二级C++笔试试题及答案(考试时间90分钟,满分100分)一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是A)程序设计就是编制程序B)程序的测试必须由程序员自己去完成C)程序经调试改错后还应进行再测试D)程序经调试改错后不必进行再测试(2)下列数据结构中,能用二分法进行查找的是A)顺序存储的有序线性表B)线性链表C)二叉链表D)有序线性链表(3)下列关于栈的描述正确的是A)在栈中只能插入元素而不能删除元素B)在栈中只能删除元素而不能插入元素C)栈是特殊的线性表,只能在一端插入或删除元素D)栈是特殊的线性表,只能在一端插入元素,而在另一
1端删除元素(4)下列叙述中正确的是A)一个逻辑数据结构只能有一种存储结构B)数据的逻辑结构属于线性结构,存储结构属于非线性结构C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率(5)下列描述中正确的是A)软件工程只是解决软件项目的管理问题B)软件工程主要解决软件产品的生产率问题C)软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D)软件工程只是解决软件开发中的技术问题(6)在软件设计中,不属于过程设计工具的是A)PDL(过程设计语言)B)PAD图C)N-S图D)DFD图(7)下列叙述中正确的是A)软件交付使用后还需要进行维护B)软件一旦交付使用就不需要再进行维护
2C)软件交付使用后其生命周期就结束D)软件维护是指修复程序中被破坏的指令(8)数据库设计的根本目标是要解决A)数据共享问题B)数据安全问题C)大量数据存储问题D)简化数据维护(9)设有如下关系表:则下列操作中正确的是A)T=RCSB)T=RUSC)T=RxSD)T=R/S(10)数据库系统的核心是A)数据模型B)数据库管理系统C)数据库D)数据库管理员
3(11)下列关于C++函数的叙述中,正确的是A)每个函数至少要具有一个参数B)每个函数都必须返回一个值C)函数在被调用之前必须先声明D)函数不能自己调用自己(12)下列关于类和对象的叙述中,错误的是A)一个类只能有一个对象B)对象是类的具体实例C)类是对某一类对象的抽象D)类和对象的关系是一种数据类型与变量的关系(13)在C++中,用于实现运行时多态性的是A)内联函数B)重载函数C)模板函数D)虚函数(14)下列关于运算符重载的叙述中,正确的是A)通过运算符重载,可以定义新的运算符B)有的运算符只能作为成员函数重载C)若重载运算符+,则相应的运算符函数名是+D)重载一个二元运算符时,必须声明两个形参(15)下列关于模板的叙述中,错误的是A)模板声明中的第一个符号总是关键字template
4B)在模板声明中用<和>括起来的部分是模板的形参后C)类模板不能有数据成员D)在一定条件下函数模板的实参可以省略(16)对于语句cout«A)“cout”是一个输出流对象B)“endl”的作用是输出回车换行C)“x”是一个变量D)“<<”称作提取运算符(17)下列字符串中,正确的C++标识符是A)fbo-1B)2bC)newD)256(18)已知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};则下列叙述中错误的是A)枚举常量NAME的值为1B)枚举常量NUMBER的值为1
5C)枚举常量MINUS的值为6D)枚举常量PRINT的值为10(19)执行语句序列inti=0;while(ix25)i+=3;cout<输出结果是A)24B)25C)27D)28(20)要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中错误的是A)intvect[]={30,50,-88};B)intvect[]={30,50,-88,0,0};C)intvect[5]={30,50,-88};D)intvect[5]={30,50,-88,0,0};(21)有如下程序:#includevoidfun(int&x,inty){intt=x;x=y;y=t;}intmain()inta[2]={23,42);fun(a[l],a[0]);
6std::cout«a[0]«","«a[l]«std::endl;return0;)执行后的输出结果是A)42,42B)23,23C)23,42D)42,23(22)有如下类声明:classFoo{intbar;};则Foo类的成员bar是A)公有数据成员B)公有成员函数C)私有数据成员D)私有成员函数(23)有如下类声明:classMyBASE{intk;public:voidset(intn){k=n;}intget()const{returnk;}};
7classMyDERIVED:protectedMyBASE{protected:intj;public:voidset(intm,intn){MyBASE::set(m);j=n;}intget()const{returnMyBASE::get()+j;)};则类MyDERIVED中保护的数据成员和成员函数的个数是A)4B)3C)2D)1(24)已知在一个类体中包含如下函数原型:VOLUMEoperator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是A)这是运算符-的重载运算符函数B)这个函数所重载的运算符是一个一元运算符C)这是一个成员函数D)这个函数不改变类的任何数据成员的值(25)有如下函数模板定义:template
8Tfunc(Tx,Ty){returnx*x+y*y;}在下列对func的调用中,错误的是A)func(3,5);B)func(3.0,5.5);C)func(3,5.5);D)fiinc(3,5.5);(26)有如下程序:#includeusingnamespacestd;intmain(){cout.fill('*');cout.width(6);cout.fillf#');cout«123«endl;return0;}执行后的输出结果是A)###123B)123###C)***123
9A)123***(27)在下列函数原型中,可以作为类AA构造函数的是A)voidAA(int);B)intAA();C)AA(int)const;D)AA(int);(28)下列关于this指针的叙述中,正确的是A)任何与类相关的函数都有this指针B)类的成员函数都有this指针C)类的友元函数都有this指针D)类的非静态成员函数才有this指针(29)有如下程序:#includeusingnamespacestd;classTest{public:Test(){n+=2;}〜Test(){n-=3;}staticintgetNum(){returnn;}private:staticintn;};intTest::n=1;intmain()
10(Test*p=newTest;deletep;cout«"n="«Test::getNum()«endl;return0;}执行后的输出结果是A)n=0B)n=lC)n=2D)n=3(30)有如下程序:#includeusingnamespacestd;classA{public:A(){cout«"A',;}};classB{public:B(){cout«"B'*;}};classC:publicA{Bb;public:C(){cout«"C";}
11};intmain(){Cobj;return0;}执行后的输出结果是A)CBAB)BACC)ACBD)ABC(31)有如下类声明:classXA{intx;public:XA(intn){x=n;});classXB:publicXA{inty;public:XB(inta,intb););在构造函数XB的下列定义中,正确的是A)XB::XB(inta,intb):x(a),y(b){}B)XB::XB(inta,intb):XA(a),y(b){}C)XB::XB(inta,intb):x(a),XB(b){}D)XB::XB(inta,intb):XA(a),XB(b){}(32)有如下程序:
12#includeusingnamespacestd;classBASE{public:〜BASE(){cout«"BASE";}};classDERIVED:publicBASE{public:〜DERIVED(){cout«"DERIVED";});intmain(){DERIVEDx;return0;}执行后的输出结果是A)BASEB)DERIVEDC)BASEDERIVEDD)DERIVEDBASE(33)在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的A)operator+有两个参数,operator*有两个参数B)operator+有两个参数,operator*有一个参数C)operator+W一个参数,operator*有两个参数D)operator+有一个参数,operator*有一个参数(34)下面关于C++流的叙述中,正确的是A)cin是一个输入流对象
13B)可以用ifstream定义一个输出流对象C)执行语句序列char*y="PQMN";cout 14A)55B)57C)75D)77二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡[1】〜【15】序号的横线上,答在试卷上不得分。(1)数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是【1】0(2)算法复杂度主要包括时间复杂度和【2】复杂度。(3)在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中【3】的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。(4)一棵二叉树第六层(根结点为第一层)的结点数最多为【4】个。(5)数据结构分为逻辑结构和存储结构,循环队列属于【5】结构。(6)下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回false。请在横线处填上适当内容,实现该函数。boolfun(char*str)( 15inti=0,j=0;while(str[j])[6];fbr(j-;ireturni[7]j;)(7)执行语句序列intx=10,&r=x;cout><«,-,«输出结果为【8】o(8)下列程序的输出结果为Objectid=0Objectid=l请将程序补充完整。#includeusingnamespacestd;classPoint(public:Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;} 16〜Point(){countP—;}intGetX(){returnX;}intGetY(){returnY;}staticvoidGetC(){cout«"Objectid="« 17classBase(public:[12]voidfun(){cout«l;}};classDerived:publicBase(public:voidfun(){cout«2;}};intmain()(Base*p=newDerived;p->fun();deletep;return0;}(12)请将下列类定义补充完整。classBase{public:voidfun(){cout«"Base::fun" 18[12]〃显式调用基类的fun函数cout«"Derived二fbn"< 19};2005年9月全国计算机等级考试二级C++笔试试题答案选择题:03.D06.D09.B01.C04.D07.A10.B02.A05.C08.A11.C 2012.A24.Bpoint::count13.D25.C填空题:p=014.B26.A36.数据库系44.友元15.C27.D统45.私有16.D28.D37.空间46.virtual17.D29.A38.驱动模块47.Base::fun()18.A30.D39.3248咸员19.C31.B40.存储49.stack[-to20.A32.D41.J++;P]21.B33.C>=22.C34.A42.10-1023.B35.B43.int2006年4月全国计算机等级考试二级C++笔试试题及答案一、选择题((1)〜(35)每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列选项不属于结构化程序设计方法的是A.自顶向下B.逐步求精C.模块化D.可复用(2)两个或两个以上模块之间关联的紧密程度称为 21A.耦合度B.内聚度C.复杂度D.数据传输特性(3)下列叙述中正确的是A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对(4)按照“后进先出”原则组织数据的数据结构是A.队列B.栈C.双向链表D.二叉树(5)下列叙述中正确的是A.线性链表是线性表的链式存储结构B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性结构(6)对如下二叉树,进行后序遍历的结果为A.ABCDEFB.DBEAFCC.ABDECF 22A.DEBFCA(7)在深度为7的满二叉树中,叶子结点的个数为A.32B.31C.64D.63(8)“商品”与“顾客”两个实体集之间的联系一般是A.一对一B.一■对多C.多对一D.多对多(9)在E-R图中,用来表示实体的图形是A.矩形B.椭圆形C.菱形D.三角形(10)数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMS 23D.没有任何关系(11)下列关于C++函数的说明中,正确的是 24C.只能重载C++中已经有的运算符,不能定义新运算符 25A.constintbuffer=256; 26usingnamespacestd;intmain(){voidfunction(doubleval);doubleval;function(val);cout 27〃③friendvoidshow(AAaa)const{cout<〃④};其中的四个函数定义中正确的是A.①B.②C.③D.④(23)有如下程序:#include+usingnamespacestd;#includeusingnamespacestd;classBase(public:voidfiin(){cout«"Base::fun"<);classDerived:publicBasepublic:voidfiin()(cout«"Derived::fun"<} 28};intmain(){Derivedd;d.fun();return0;)已知其执行后的输出结果为:Base::funDerived::fun则程序中下划线处应填入的语句是A.Base.fun();B.Base::fun()C.Base->fun()D.fun();(24)下面是重载为非成员函数的运算符函数原型,其中错误的是A.Fractionoperator+(Fraction,Fraction);B.Fractionoperator-(Fraction);C.Fraction&operator=(Fraction&,Fraction);D.Fraction&operator+=(Fraction&,Fraction);(25)有如下函数模板:template 29Tcast(Uu){returnu;}其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是A.cast(i);B.cast<>(i);C.cast(i);D.cast(i);(26)若磁盘上已存在某个文本文件,其全路径文件名为d: 30cre\test.txt,下列语句中不能打开该文件的是A.ifstreamfile("d: 31cre\test.txt");B.ifstreamfile("d: 32cre\test.txt");C.ifstreamfile;file.open("d: 33cre\test.txt");D.ifstream*pFile=newifstream("d: 34cre\test.txt");(27)有如下类定义:classFoopublic:Foo(intv):value(v){}〃①-Foo(){}〃②private:Foo(){}〃③intvalue=0;II@};其中存在语法错误的行是 35A.①B.②C.③D.④(28)有如下类定义:classPoint(intx_,y_;public:Point():x_(0),y_(0){}Point(intx,inty=0):x_(x),y_(y){});若执行语句Pointa(2),b[3],*c[4];则Point类的构造函数被调用的次数是A.2次B.3次C.4次D.5次(29)有如下类定义:classTest 36{public:Test(){a=0;c=0;}〃①intf(inta)const{this->a=a;}〃②staticintg(){returna;}〃③voidh(intB.{Test::b=b;};II®private:inta;staticintb;constintc;};intTest::b=0;在标注号码的行中,能被正确编译的是A.①B.②C.③D.④(30)有如下程序:#includeusingnamespacestd;classA{public:A(){cout«"A";}~A(){cout«"~A";}};classB:publicA(A*p;public:B(){cout«"B";p=newA();}~B(){cout«"-BH;deletep;}};int 37main()Bobj;return0;执行这个程序的输出结果是A.BAA~A~B〜AB.ABA〜B〜A〜AC.BAA〜B〜A〜AD.ABA〜A〜B〜A(31)有如下程序:#includeusingnamespacestd;classBaseprivate:voidfunl()const{cout«"funl";}protected:voidfun2()const{cout«"fun2";}public:voidfun3()const{cout«nfun3}classDerived:protectedBasepublic:voidfun4()const{cout«"fun4";}};intmain() 38{Derivedobj;obj.funl();//①obj.fUn2();〃②obj.fun3();//③obj.fun4();II®return0;)其中有语法错误的语句是A.①②③④B.①②③C.②③④D.①④(32)有如下程序:#includeusingnamespacestd;classBasepublic:voidfunl(){cout«"Base 39'^;}virtualvoidfun2(){cout«"Base 40";}};classDerived:publicBase{ 41public:voidfunl(){cout«"Derived 42";}voidfun2(){cout«"Derived 43";}};void戈Base&B.{b.funl();b.fun2();}&,It;,/P>intmain()(Derivedobj;f(obj);return0;)执行这个程序的输出结果是A.BaseB.BaseC.DerivedD.DerivedBaseDerivedBaseDerived(33)有如下程序:#includeusingnamespacestd;classComplex{doublere,im;public:Complex(doubler,doublei):re(r),im(i){}doublereal()const{returnre;}double 44image()const{returnim;}Complex&operator+=(Complexa)(re+=a.re;im+=a.im;return*this;ostream&operator«(ostream&s,constComplex&z)returns«'(yintmain(){Complexx(l,-2),y(2,3);cout«(x+=y) 45intmain()(cout.fill(,**);cout 46A.setvalue(intn0){n=nO;}二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡[1】〜【15】序号的横线上,答在试卷上不得分。(1)对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为【1】O⑵在面向对象方法中,[2]描述的是具有相似属性与操作的一组对象。(3)在关系模型中,把数据看成是二维表,每一个二维表称为一个【3】o(4)程序测试分为静态分析和动态测试。其中[4]是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。(5)数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为【5】o(6)有一种只在循环语句或switch语句中使用的流程控制语句,表示该语句的关键字是【6】o(7)程序中有如下语句fbr(inti=0;i<5;i++)cout«*(p+能够依次输出int型一维数组DATA的前5个元素。由此可知,变量p的定义及初始化语句是【7】o 47(8)若下面程序运行时输出结果为1,A,10.12,B,3.5请将程序补充完整。,#includeusingnamespacestd;intmain(){voidtest(int,char,double【8】);test(l;A',10.1);test(2;B');return0;)voidtest(inta,charb,doubleC.(cout<)(9)有如下类声明:classMyClass(inti; 48private:intj;protected:intk;public:intm,n;);其中,私有成员的数量为【9】(10)有如下程序:#includeusingnamespacestd;classCon{charID;public:Con():ID('A'){cout«l;}Con(charIC.:ID(ID.{cout«2;}Con(Con&C.:ID(c.getID()){cout«3;}chargetID()const{returnID;});voidshow(ConC.{cout 49show(c2);return0;执行上面程序的输出是[10](11)有如下程序:#includeusingnamespacestd;classONE{public:virtualvoidf(){cout«"l";}};classTWO:publicONE(public:TWO(){cout«"2";}};classTHREE:publicTWOpublic:virtualvoidf(){TWO::f();cout«"3";}};intmain()( 50ONEaa,*p;TWObb;THREEcc;p=&cc;p->f();return0;}执行上面程序的输出是[11](12)有如下程序:#includeusingnamespacestd;classPARENT(public:PARENT(){cout«"PARENT";}};classSON:publicPARENTpublic:SON(){cout«"SON";}};intmain(){SONson; 51PARENT*p;p=&son;return0;)执行上面程序的输出是[12]o(13)若以非成员函数形式,为类Bounce重载“!”运算符,其操作结果为一bool型数据,则该运算符重载函数的原型是[13]o(14)下面是复数类complex的定义,其中重载的运算符“+”的功能是返回一个新的复数对象,其实部等于两个操作对象实部之和,其虚部等于两个操作对象虚部之和;请补充完整:classcomplex{doublereal;〃实部doubleimag;//虚部public:complex(doubler,doublei):real(r),imag(i){} 52complexoperator+(complexa)returncomplex(L14]);}};(15)已知一个函数模板定义为templateTl,typenameT2>T1FUN(T2n){returnn*5.0;}若要求以int型数据7为函数实参调用该模板函数,并返回一个double型数据,则该调用应表示为[15]2006年4月笔试试卷参考答案及详解一、选择题(1)D)(6)D)(2)A)(3)D)(4)B)(5)A)(7)C)(8)D)(9)A)(10)C)(11)C)(16)A)(21)D)(26)A)(31)B)(12)A)(17)A)(22)B)(27)D)(32)B)(13)B)(18)B)(23)B)(28)C)(33)D)(14)C)(19)C)(24)C)(29)D)(34)A)(15)B)(20)D)(25)D)(30)B)(35)B)二、填空题(1)45(2)类(3)关系(4)静态分析 53(5)物理独立性(6)break(7)int*p=DATA(8)=3.5(9)2(10)13A23B(11)2213(12)PARENTSON(13)booloperator!(Bounce);(Bounce后可以跟一个变量名)(14)[14]real+a.real,imag+a.imag(15)[15]FUN 54下列选项中不属于软件生命周期开发阶段任务的是A)、软件测试B)、概要设计C)、软件维护D)、详细设计(4)在数据库系统中,用户所见的数据模式为。A)、概念模式B)、外模式C)、内模式D)、物理模式(5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和oA)、编码设计B)、测试阶段C)、运行阶段D)、物理设计(6)设有如下三个关系表下列操作中正确的是2006年9月二级C++考试试卷第2页(共5页)A)、T=RASB)、T=RUSC)、T=RXSD)、T=R/S(7)下列叙述中正确的是A)、一个算法的空间复杂度大,则其时间复杂度也必定大B)、一个算法的空间复杂度大,则其时间复杂度必定小C)、一个算法的时间复杂度大,则其空间复杂度必定小D)、上述三种说法都不对(8)在长为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为0A)、63B)、640、6D)、7(9)数据库技术的根本目标是要解决数据的。 55A)、存储问题B)、共享问题C)、安全问题D)、保护问题(10)对下列二叉树:进行中序遍历的结果是。A)、ACBDFEGB)、ACBDFGEC)、ABDCGEFD)、FCADBEG(11)下列有关内联函数的叙述中,正确的是。A)、内联函数在调用时发生控制转移B)、内联函数必须通过关键字iniine来定义C)、内联函数是通过编译器来实现的D)、内联函数体的最后一条语句必须是rennin语句2006年9月二级C++考试试卷第3页(共5页)(12)下列情况中,不会调用拷贝构造函数的是。A)、用一个对象去初始化同一类的另一个新对象时B)、将类的一个对象赋予该类的另一个对象时C)、函数的形参是类的对象,调用函数进行形参和实参结合时D)、函数的返回值是类的对象,函数执行返回调用时(13)下列有关继承和派生的叙述中,正确的是。A)、如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B)、派生类的成员函数可以访问基类的所有成员C)、基类对象可以赋值给派生类对象D)、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类 56(14)下列运算不能重载为友元函数的是oA)、=()、■!•—H—C)、><>=<=D)、+=-=*=/=(15)关于在调用模板函数时模板实参的使用,下列表述正确的是0A)、对于虚类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B)、对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,FCEADBG则都可以省略C)、对于虚拟型参数所对应的模板实参,若能够省略则必须省略D)、对于常规参数所对应的模板实参,任何情况下都不能省略2006年9月二级C++考试试卷第4页(共5页)(16)下列关于输入流类成员函数getline。的描述中,错误的是。A)、该函数是用来读取键盘输入的字符串的 57B)、该函数读取的字符串长度是受限制的C)、该函数读取字符串时,遇到终止符便停止D)、该函数读取字符串时,可以包含空格(17)下列符号中,正确的C++标识符是oA)、enumB)、2bC)、foo-9D)_32(18)下列语句中,错误的是oA)、constintbuffer二256;B)、constdoubIe*point;C)、intconstbuf千6尸256;D)、doubIe*constpoint;(19)if语句的语法格式可描述为格式1:if(〈条件〉)<语句)或格式2:if(〈条件))<语句1>else〈语句2>关于上面的语法格式,下列表述中错误的是A)、〈条件>部分可以是一个if语句,例如if(if(a=0)…)…B)、〈条件>部分可以是一个if语句,例如if(…)if(…)…C)、如果在<条件>前加上逻辑非运算符!并交换《语句1》和<语句2>的位置,语句功D)、<语句)部分可以是一个循环语句,例如if(…)whiIe(-) 58(20)有如下说明inta[10]={1,2,3,4,5,,6,7,8,9,10),*p=a;则数值为9的表达式是oA)、*p+9'B)、*(p+8)C)、*p+=9D)、p+72006年9月二级C++考试试卷第5页(共5页)(21)或下面的函数调用fun(a+b,3,max(n-1)b)则fun的实参个数是oA)、3B)、40、5D)、6(22)以下关键字不能用来声明类的访问权限的是oA)、publicB)、staticC)、protectedD)、private(23)在公有继承的情况下,允许派生类直接访问的基类成员包括oA)、公有成员B)、公有成员和保护成员C)、公有成员、保护成员和私有成员D)、保护成员(24)关于运算符重载,下列表述中正确的是oA)、C++已有的任何运算符都可以重载B)、运算符函数的返回类型不能声明为基本数据类型C)、在类型转换符函数的定义中不需要声明返回类型D)、可以通过运算符重载来创建C++中原来没有的运算符 59(25)关于关键字class和typename,下列表述中正确的是A)、程序中的typename都可以替换为classB)、程序中的class都可以替换为typenameC)、在模板形参表中只能用typename来声明参数的类型D)、在模板形参表中只能用class或typename来声明参数的类型(26)有如下程序#incIude 60(27)有如下程序#incIude 61#incIude 62D)、cout«fun20vaIue()«fun::i«fun10vaIue();(29)有如下程序#incIude 63(30)有如下程序2006年9月二级C++考试试卷第9页(共5页)#incIude 64pubIic;MyBase(intn=O):k(n){}intvaIue0const{returnk;}h2006年9月二级C++考试试卷第10页(共5页)cIassMyDerived;MyBase{intj;pubIic;MyDerived(inti):j(i){}intgetK0const{returnk;}intgutj0const{returnj;}h编译时发现有一处语法错误,对这个错误最佳准确的描述是A)、函数getK试图访问基类的私有成员变量KB)、在类MyDerived的定义中,基类名MyBase前缺少关键字publie、protected或privateC)、类MyDerived缺少一个无参的构造函数D)、类MyDerived的构造的数没有对基数数据成员K进行初始化(32)在一个派生类对象结束其生命周期时A)、先调用派生类的析构函数后调用基类的析构函数B)、先调用基类的析构函数后调用派生类的析构函数 65C)、如果基数没有定义析构函数,则只调用派生类的析构函数D)、如果派生类没有定义析构函数,则只调用基类的析构函数(33)有如下的运算重载函数定义:DoubIeoperator+(inti,intk){returndouble(i+k);)但定义有错误,对这个错误的最准确的描述是OA)、+只能作为成员函数重载,而这里的+是作为非成员函数重载的B)、两个int型参数的和应该是int型,而这里将+的返回类型声明为doubIeC)、没有将运算符重载函数声明为某个类的友元2006年9月二级C++考试试卷第11页(共5页)D)、C++已经提供了求两个int型数据之和运算符+,不能再定义同样的运算符(34)语句ofstreamf("SALARY。DAT",ios_base::app)的功能是建立流对象f,并试图打开文件SALARY。DAT与千关联,而且。A)、若文件存在,将其置为空文件;若文件不存在,打开失败B)、若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件C)、若文件存在,将文件指针定 66位于文件首;若文件不存在,打开失败D)、若文件存在,打开失败;若文件不存在,建立一个新文件(35)有如下程序#incIude 67retumO;)运行程序,屏幕上将显示输出OA)、B1B2B)、A1A2C)、B1A2D)、A1B2二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡[1]〜[15]序号的横线上,答在试卷上不得分。(1)下列软件系统结构图的宽度为(2)[2]的任务是诊断和改正程序中的错误。(3)一个关系表的行为[3]。(4)按“行进后出”原则组织数据的数据结构是[4]。(5)数据结构分为线性结构和非线性结构,带链的队列属于⑸。(6)若有定义语句:b;,则变量b的数据类型是⑻。(7)已知数组a中的元素个数为n,下列语句的作用是将下标为i的元素移动到下标为i—1的单元,其中1WiVn。例如,当廿4,a中原有数据为1,2,3,4时,则移动后a中元素为2,3,4,4O请将语句补充完整: 68For(inti=0;i 69intmain()Foof[3],g(3);returnO;)(10)习惯性在下列程序的输出结果是42,请将画线处缺失的部分补充完整。#incIude 70foprint();retumO;}(11)如果不能使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基数继承的成员,下列程序没有使用多态机制,其输出结果是[11]。#incIude 71pd->print();deIetepd;returnO;}(12)在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承private。已知有如下类定义:cIassBase{protected:voidfun(){});CIassDerived:Base{};则Base类中的成员函数fun(),在Derived类中的访问权限是[12](注意:要求填写private、protected或public中的一项)。(13)在MyClass类的定义中,对赋值运算符二进行重载。请将画线处缺失的部分补充完整。[13]MyClass::operator=(constMyCIassrhs)if(this=&rhs)return*this; 72vaIue=rhsovaIue;return*this;)2006年9月二级C++考试试卷第16页(共5页)(14)插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入到已排序序列中的正确位置,InsertSort类的成员函数sort()实现了插入排序算法,请将画线处缺失的部分补充完整。cIassInsertSort{pubIic:InsertSort(int*a0,intnO):a(aO),n(n0){}〃参数组首地址,n是数组元素个数voidsort(){〃此函数假设已排离序列初始化状态只包含a[0],未排序序列初始为a[1]…a[n-l]for(inti=1;i 73if(t>a[j-1])break;a[j]=a[j-1];)protected:int*a,n;〃指针a用于存放数组首地址,n用于存放数组元素个数};(15)下列程序的输出结果是[15]#incIude 74B(){b=S;}voidprint()const{cout«b;});voidshow(Aa&X){X,print()}intmain(){Ad1;*p;Bd2;p—&d2;d1,print();d2,print();p->print();show(d1);show(d2);returnO;}2006年9月全国计算机等级考试二级C++笔试答案一、选择题01、D02、A03、C04、B05、D06、C07、D08、D09、B10、A2006年9月二级C++考试试卷第18页(共5页)11、C12、D13、D14、A15、D21、A22、B23、B24、C25、B26、D27、D28、A29、A30、B31、A32、B33、C34、B35、C2007年4月全国计算机等级考试二级C++笔试试题及答案 75一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是。A)算法的效率只与问题的规模有关,而与数据的存储结构无关.B)算法的时间复杂度是指执行算法所需要的计算工作量C)数据的逻辑结构与存储结构是一一对应的.D)算法的时间复杂度与空间复杂度一定相关.(2)在结构化程序设计中,模块划分的原则是。A)各模块应包括尽量多的功能B)各模块的规模应尽量大C)各模块之间的联系应尽量紧密D)模块内具有高内聚度,模块间具有低耦合度(3)下列叙述中正确的是。A)软件测试的主要目的是发现程序中的错误.B)软件测试的主要目的是确定程序中错误的位置.C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D)软件测试是证明软件没有错误(4)下面选项中不属于面向对象程序设计特征的是。 76A)继承性B)多态性C)类比性D)封装性(5)下列对列的叙述正确的是。A)队列属于非线性表B)队列按“先进后出”的原则组织数据C)队列在队尾删除数据D)队列按“先进先出”原则组织数据(6)对下列二叉树进行前序遍历的结果为A)DYBEAFCZXB)YDEBFZXCAC)ABDYECFXZD)ABCDEFXYZ(7)某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为A)n+1B)n-1C)2nD)n/2(8) 77在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是。A)井B)交C)投影D)笛卡儿乘积(9)在E-R图中,用来表示实体之间是联系的图形是。A)矩形B)椭圆形C)菱形D)平行四边形(10)下列叙述中错误的是。A)在数据库系统中,数据的物理结构必须与逻辑结构一致.B)数据库技术的根本目标是要解决数据的共享问题C)数据库设计是指在已有数据库管理系统的基础上建立数据库D)数据库系统需要操作系统的支持(11)为了取代C中带参数的宏,在C++中使用A)重载函数B)内联函数C)递归函数D)友元函数(12)下列关于类定义的说法中,正确的是 78A)类定义中包括数据成员和函数成员的声明B)类成员的缺省访问权限是保护的C)数据成员必须被声明为私有的D)成员函数只能在类体外进行定义(13)下列关于派生类构造函数和析构函数的说法中,错误的是A)派生类的构造函数会隐含调用基类的构造函数B)如果基类中没有缺省构造函数,那么派生类必须定义构造函数C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数(14)通过运算符重载,可以改变运算符原有的A)操作数类型B)操作数个数C)优先级D)结合性(15)有如下函数模板:templateTsouare(Tx)(retumx*x;)基中T是A)函数形参 79B)函数实参C)模板形参D)模板实参(16)使用输入输出操作符setw,可以控制A)输出精度B)输出宽度C)对齐方式D)填充字符(17)下列字符串中,不可以用作C++标识符的是A)y_2006B)TESTHC)ReturnD)switch(18)字面常量42、4.2、42L的数据类型分别是A)long、doubleintB)long、float、intC)int>double>longD)int、float、long(19)执行下列语句段后,输出字符的个数是fbr(inti=50;1>1;一i)cout«n*"A)48B)49C)50D)51 80(20)有如下程序段inti=0,j=l;int&r=i;//①r=j;//②int*p=&i;//③*p=&r;//④基中会产生编译错误的语句是A)④B)③C)②D)①(21)有如下函数定义:voidfunc(inta,int&b){a++;b++;}若执行代码段:intx=0,y=l 81fiinc(x,y);则变量x和y值分别是A)0和1B)1和1C)0和2D)1和2(22)有如下程序:#includeusingnamespacestd;classA{publicstaticinta;voidinit(){a=l;}A(inta=2){init();a++;}};intA:;a=0Aobj;Intmain()cout 82A)0B)1C)2D)3(23)下列有关继承和派生的叙述中,正确的是A)派生类不能访问基类的保护成员B)作为虚基类的类不能被实例化C)派生类应当向基类的构造函数传递参数D)虚函数必须在派生类中重新实现(24)下列运算符中,不能被重载的是A)&&B)!=C).D)++(25)下列函数模板的定义中,合法的是A)templateTabs(Tx){returnx<0-x:x;}B)templateclassTabs(Tx){retumx<0-x;x;}C)templateTabs(Tx){returnx<0-x;x;}D)templateTabs(Tx){returmx<0-x;x;}(26)在语句cin»data;中,cin是A)C++的关键字B)类名 83C)对象名D)函数名(27)有如下程序:#includeusingnamespacestd;classtest{private:inta;public:test(){cout«nconstructorv 84destruclorA)copyconstructorB)3dstructordestruclor(28)若有如下类声明classMyClass(public:MyClass(){cout«l;执行下列语句MyClassa,b[2],*P[2]以后,程序的输出结果是A)11B)111C)1111D11111 85(29)有如下程序*#includeusingnamespacestd;classpoint(public:staticintnumber;public:point(){number++point(){number-;imtpoint::number=0;voidmain(){point*ptr;printA,B;{point*ptr_point=newpoint{3}ptr=ptr_point; 86)pointC;cout 87Derived(intx,inty,intz,intm):Base(x,y){c=z;d=m;)Voidshow(){cout<}intmain()(BaseB1(50,50),*pb;DerivedDI(10,20,30,40)Pb=&Dl;Pb->show()Return0;}运行时输出的结果是A)10,20B)30,40C)20,30D)50,50 88(31)有如下程序:#includeusingnamespacestd;classA(public;A(inti){x=i;}Voidsispa(){cout 89intx;};classB;publicApublic;B(inti):A(i+10){x=i;}vouddispb(){dispa();cout 90(32)虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:#includeusingnamespacestd;classBase(public:virtualvoidf(){cout«nR)+”;)voidg(){cout«“g0+”;classDerived:publicBasepublic:voidf(){cout«n价”;voidg(){cout«^g+“;intmain() 91(Derivedd;Base*p=&d;p->f();p->g()return0:}运行时输出的结果是A)f+g+B)K)+g+C)f+gO+D)R)+g0+(33)下面程序中对一维坐标点类Point进行运算符重载#includeusingnamespacestd;classpoint{public:point(intval){x=val;}point&operator++(){x++;retum*this;}printoperator++(int){pointold=*this,++(*this);retumold;}intGetX()const{returnx;}private: 92intx;2007年4月二级C++考试试卷第8页(共5页))intmain()(pointa(10)cout«(++a).GetX()cout 93charstr[100],*p;cout«,,pleaseinputastring:v;cin»str;p=str;for(inti=0;*p!=”\0”;p++,i++);cout«i 94longx;};longfun(Samples)(if(s.x<2)return1;returns.x*fun(Sample(s.x-a));intmain()intsum=Ofbr(inti=0;i<6;i++){sum+=ftm(Sample(i);)}cout 95软件称为L3L(4)软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于【4】阶段。(5)在结构化分析使用的数据流图(DFD)中,利用【5】对其中的图形元素进行确切解释。(6)C++中只有两个逻辑常量:true和【6】。(7)若要访问指针变量p所指向的数据,应使用表达式17】。(8)已知一个函数的原型是*(intfn(doublex)若要以5.27为实参调用该函数,应使用表达式【8】O(9)有如下定义classMA{intvalue;public:MA(intn=0):valut(n){ 96MA*ta,tb;其中MA类的对象名标识符是【9】o(10)如下类定义中包含了构造函数和拷贝数的原型声明请在横线处写正确的内容,使拷贝构造函数的声明完整。ClassmyClass{Private:Intdata:Public:MyClass(intvalue);〃构造函数MyClass(const[10]anotherObject);〃拷贝构造函数}(11)用来派生新类的称为[11],而派生出的新类称为它的子类或派生类。(12)有如下程序#includeusingnamespacestd;clsaaCA{public:CAD{cout<}classCB;privateCA{ 97public;CB(){cout<}intmain(){cout<}intmain()(CAa;CBb;retumO;)这个程序的输出结果是[12]o(13)若将一个二元运算符重载为类的成员函数,其形参个数应该是【13】个。(14)有如下程序#includeusingnamespacestd;classDA{intk;public:DA(intx=l):k(x){} 98〜DA(){cout<}intmain()(DAd[]={DA(3),DA(3),DA(3)};DA*p=newDA[2];delete[]p;returnO;)这个程序的输出结果是[14]o(15)C++语言中的多态性分为编译时的多态性和[15]时的多态性。2007年4月计算机等级考试C++考试答案选择题:1-5BDACD6-10CABCA11-15BADAC16-20BCDBA21-25CCCCA26-30CDBDA30-35CBBBC 99填空:1、632、黑盒3、DBMS4、开发5、数据字典6、false7、*P8、fn(5.27)9、tb10、myclass&11、基类12、AAB13、1个14、11333 10015、运行2007年9全国计算机等级考试二级笔试试卷C++语言程序设计(考试时间90分钟,满分100分)一、选择题(每小题2分,共70分)下列个体A、B、C、D四个选项重,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)软件是指B程序和文档D程序、数据与B改正错误D验证软件A程序C算法加数据结构相关文档的完整集合(2)软件调试的目的是A发现错误C改善软件的性能的正确性(3)在面对对象方法中,实现信息隐蔽是依靠B对象的多A对象的继承D对象的分C对象的封装类(4)下列叙述重,不符合良好程序设计风格要求是A程序的效率第一,清晰第二B程序的可 101读性好C程序中要有必要的注释D输入数据前要有提示信息(5)下列叙述中正确的是A程序执行的效率与数据的存储结构密切相关B程序执行的效率只取决于程序的控制结构C程序执行的效率之取决于所处理的数据量D以上三种说法都不对(6)下列叙述中正确的是A数据的输入结构与存储结构必定是——对应的B计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构D以上三种说法都不对(7)冒泡排序在最坏的情况下的比较次数是An(n+1)/2Bnlog2nCn(n-1)/2Dn/2(8)一棵二叉树中共有70个叶子结点于80个度为1的结点,则该二叉树重的总结点数为A219B221C229D221(9)下列叙述重正确的是A 102数据库系统是一个独立的系统,它需要操作系统的支持B数据库技术的根本目标是要解决数据的共享问题C数据库管理系统是数据库系统D以上说法都不正确(10)下列叙述中正确的是A为了建立一个关系,首先是要构造数据的逻辑关系B表示关系的二维表中各各组的每一个分量还可以分成若干数据项C一个关系的属性名称为关系模式D一个关系可以包括多个二维表(11)在函数中,可以用auto,extem,register,和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是AautoBexternCregisterDstatic(12)对于一个类定义,下列叙述中错误的是A如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数C 103如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数(13)如果派生类以public方式继承基类,则原基类的protected成员和public成员在派生类中的访问类型分别是Apublic和publicBpublic和protectedCprotected和publicDprotected和protected(14)下列运算符函数中肯定不属于类FunNumber的成员函数的是Aintoperator-(FunNumber)BFunNumberoperator-()CFunNumberoperator-(int)Dintoperator-(FunNumber)(15)C++中的模板包括A对象模板和函数模板B对象模板和类模板C函数模板和类模板D变量模板和对象模板(16)如果调用C++ 104流进行输入输出,下面的叙述中正确的是A只能借助于流对象进行输入输出B只能进行格式化输入输出C只能借助于cin和cout进行输入输出D只能使用运算符》和《进行输入输出(17)下列富豪中不属于C++关键字的是AfriendBnamespaceCcontinueDbyte(18)下列各组的量申明中,含义相同的一组是Aunsignedlongint和longBsignedshortint和shortBunsignedshort和shortDshortint和int(19)必须用一对打括号括起来的程序段是Aswitch语句中的case标号语句Bif语句的分支C循环语句的循环体D函数的函数体(20)语句的int*p二&k定义于指针P,于这个语句等效的语句序列是Aint*p;p=&kBint*p;p=k 105Cint*p;*p=&kDint*p;*p=k(21)关于函数重载,下列叙述中错误的是A重载函数的函数名必须相同B重载函数必须在函数个数或类型上有所不同C重载函数的返回值类型必须相同D重载函数的函数体可以有所不同(22)有如下头文件Intfl();Staticintf2();ClassMA{PublicIntf3();Staticintf4(););在所描述的函数中,具有隐含的this指针的是AflBf2Cf3Df4(23)派生类的成员函数不能访问基类的A共有成员和保护成员B共有成员C私有成员D保护成员(24)下列关于运算符重载的描述中,正确的是A 106运算符重载为成员函数时,若参数表中五参数,重载的是一元运算符B一元运算符只能作为成员函数重载C二元运算符重载为非成员函数时,参数表中有一个参数DC++中可以重载所有的运算符(25)下列关于类模板的模板参数的叙述中,错误的是A模板参数可以作为数据成员的类型B模板参数可以作为成员函数的返回类型C模板参数可以作为成员函数的参数类型D模板函数不能作为成员函数的局部变量的类型(26)已知一程序运行后执行的第一个输出操作是Cout< 107Classmyclass{Public:MyClass(){++count;}MyClass(){--count;}Staticintgetcount(){returncount;}PrivateStaticintcount;);IntMyClass::count=0;Intmain(){Myclassobj;Cout< 108(28)有如下程序“include 109Whole(intx,inty,intz=0):p2(x),pl(y),val(z){cout< 110Priblic:Baseval;};Intmain(){Derivedd(!);Return();}程序的输出结果是A0B1C01D001(31)若有如下类定义:ClasssB{Voidfun(){}Protected;Doublevarl;Public:Voidfun2(){}};ClassD:publicB{Protected; 111Voidfun3(){}已知obj是类D的对象,下列语句中不违反成员访问控制的权限的是Aobj.funl();Bobj.varl;Cobj.fun2();Dobj.fun3();(32)有如下程序:#include 112Ptr->output();Ptr->print();Deleteptr;Return();)程序的输出结果是AIBBIDC2BD2D卜列是重载乘法运算的函数原型声明,其中错误的是Amyclassoperator*(double,double);Bmyclassoperator*(double,myclass);Cmyclassoperator*(myclass,double);Dmyclassoperator*(myclass,myclass);(34)如下函数的作用是以双倍行距输出文件:Uoiddouble_space(ifstrean&f,ofstrean&t){Charc;While() 113Public:Virtualvoidshow(){cout«wb";});ClassD:publicB{Public:Voidshow(){cout< 114(1).请将每一个空的正确答案写在答题卡【1】~【15]序号的横线上,答在试卷上不得分。(2).软件需求规格说明书应具有完整性、无歧视性、正确性、可验证性、可修改性等特征,最重要的是.(3).在两种基本测试方法中测试的原则之一是保证所测模板中每一个独立路径至少要执行一次。(4).线性表的存储结构主要分为顺序存储结构和链式储存结构。队列中是一种特殊的线性表。循环队列是队列的存储结构。(5).对下列二叉树进行中序遍历的结果为.(6).在E-R图中,矩形属于在有定义语句:inta=3,b=2,c=l;则表达式a 115returns则在某程序中第二次执行函数用语句f();时,函数f的返回值是•(9)已知如下程序得输出结果时23,请将划线处缺失得部分补充完整。#include 116Conple(doublex.doubley){Real=x;Imag=y;>Complexoperator♦(complexc){〃重载加法运算符Returncomplex();>>;(14)请将如下程序补充完整,使得输出结果为bbaaftinclude 117Inttop;〃栈顶元素(数组下标)Public:Stack():top(0){}Voidpush(sonsint;〃新元素item压入栈Intpop(void);〃将栈顶元素弹出栈};Voidstack::pbsh(constint&item){If(top==99)〃如果栈满,程序结束Exit(1);Top++;〃栈顶指针增1[15];Intstack::pop(){ 118结束If(top<0)〃如果栈空,程序Exit(1);Returnplish[top-];参考答案1、无歧义性12、virtualvoid一、选择题:2、路径覆盖display()=0;1-5DBCAA3、顺序存储结构13、6-10DCABC4、ACBDFEHGPreal+c.real,ima11-15ABDDC5、实体集g+c.imag16-20ADBDA6、214>_A()21-25CCCAD7、615、26-30BACBD8、4plist[top]=item31-35CBAAC9>(*p)二、填空题:10、ABBA11>Base::fun()2008年4月全国计算机等级考试二级C++笔试试题及答案 119(考试时间90分钟,满分100分)一、选择题(每小题2分,共70分)(1)程序流程图中带有箭头的线段表示的是()oA)图元关系B)数据流C)控制流D)调用关系(2)结构化程序设计的基本原则不包括()。A)多元性B)自顶向下C)模块化D)逐步求精(3)软件设计中模块划分应遵循的准则是()0A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合(4)在软件开发中,需求分析阶段产生的主要文档是()。A)可行性分析报告B)软件需求规格说明书C)概要设计说明书D)集成测试计划(5)算法的有穷性是指()。A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-l)/2的排序方法是()。A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)下列关于栈的叙述正确的是()。A)栈按“先进先出”组织数据B)栈按“先进后出”组织数据C)只能在栈底插入数据D)不能删除数据(8)在数据库设计中,将E-R图转换成关系数据模型的过程属于()oA)需求分析阶段B)概念设计阶段 120C)逻辑设计阶段D)物理设计阶段(9)有三个关系R、S和T如下:RSTBCDa0klb1nl由关系R和S通过运算得到关系T,则所使用的运算为()。A)并B)自然连接C)笛卡尔积D)交(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()oA)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩(11)下列有关函数重载的叙述中,错误的是A)函数重载就是用相同的函数名定义多个函数B)重载函数的参数列表必须不同C)重载函数的返回值类型必须不同D)重载函数的参数可以带有默认值(12)下列有关类成员的叙述中,正确的是A)友元函数是类的成员函数B)类成员的默认访问权限是私有的C)类成员函数必须声明为公有的D)类的静态数据成员不能是常成员(13)下列有关类继承的叙述中,错误的是A)继承可以实现软件复用B)虚基类可以解决由多继承产生的二义性问题C)派生类构造函数要负责调用基类的构造函数D)派生类没有继承基类的私有成员(14)下列有关运算符重载的叙述中,正确的是A)运算符重载是多态性的一种表现B)C++中可以通过运算符重载创造新的运算符 121B)C++中所有运算符都可以作为非成员函数重载D)重载运算符时可以改变基结合性(15)下列有关模板的叙述中,正确的是A)函数模板不能含有常规形参B)函数模板的一个实例就是一个函数定义C)类模板的成员函数不能是模板函数D)用类模板定义对象时,绝对不能省略模板实参(16)下列有关C++流的叙述中,错误的是A)C++操作符setw设置的输出宽度永久有效B)C++操作符endl可以实现输出的回车换行C)处理文件I/O时,要包含头文件fstreamBCDa0klBCDf3h2aOkln2xlD)进行输入操作时,eof()函数用于检测是否到达文件尾(17)下列符号中能够作为C++标识符的是A)constB)2aC)shapeD)-count(18)已知枚举类题声明语句为:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};则下列说法中错误的是A)枚举常量YELLOW的值为1B)枚举常量RED的值为6C)枚举常量BLACK的值为10D)枚举常量WHITE的值为1(19)执行下列语句段后,输出字符“*”的个数是for(inti=50;i>l;I-=2)cout«,*1;A)24B)25C)26D)50(20)有如下定义:inta[5]={l,3,5,7,9},*p=a;下列表达式中不能得到数值5的是A)a[2]B)a[3]C)*(p+2)D)*p+4(21)已知函数f的原型是voidf(int*a,long&b);,变量vl、v2的定义是:intv1;loongv2;下列调用语句中正确的是A)f(vl,&v2);B)f(vl,v2);C)f(&vl,&v2);D)f(&vl,v2);(22)有如下类定义: 122classPoint{private;staticinthow_many;};how_many=0;要初始化Point夹的静态成员how_many,下划线处应填入的内容是A)ingB)staticintC)intPoint::D)staticintPoint::(23)在下列关键字中,不能用来表示继承方式的是A)privateB)staticC)publicD)protected(24)已知Value是一个类,Value是Value的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是A)Valueoperator+(Valuev,inti);B)Valueoperator+(Valuev=value,inti);C)Valueoperator+(Valuevinti=0);D)Valueoperator+(Valuev=value,inti=0);(25)下面是一个模板声明的开始部分:tempiute 123Intvalue;public;MyClass(intn):value(n){}intgerValue()const{returnvalue;}};则类MyClass的构造函数的个数是A)1个B)2个C)3个D)4个(28)有如下类和对象的定义:classConstants{public;staticdoublegetPI(){return3.1416;}};Constantsconstants;下列各组语句中,能输出3.1416的是A)cout«constants->getPI();和coutwConstants二gerPI();B)cout«constants.getPI();^0cout«Constants.getPI();C)cout«constants->getPI();和cout«Constants->getPI();D)cout«constants.getPI();和cout«Constants::getPI();(29)有如下程序:#include 124intgetAmount()const{returnamount;});classDerived:publicBase{protected;intvalue;public;Derived(intm,intn):value(m).Base(n){}IntgetData()const{returnvalue+amount;}};已知x是一个Derived对象,则下列表达式中正确的是A)x.value+x.getAmount()B)x.getData()-x.gctAmount()C)x.getData()-x.amountD)x.value+x.amount(31)有如下程序:#include 125C)纯虚函数的声明以“=0;”结束D)纯虚函数都不能有函数体(33)有如下程序:#include 126};classGB:publicGA{public;virtualintf(){return2;}};voidshow(GAg){cout«g.f();}voiddisplay(GA&g){cout«g.f();}intmain(){GAa:show(a);display(a);GBb:show(b);display(b);return0;)运行时的输出结果是A)1111B)1211C)1112D)1212二、填空题(每空2分,共30分)(1)测试用例包括输入值集和值集。(2)深度为5的满二叉树有个叶子结点。(3)设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有个元素。(4)在关系数据库中,用来表示实体之间联系的是。(5)在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,负责数据的模式定义与数据的物理存取构建。(6)在面向对象的程序设计中,将数据和处理数据的操作封装成一个整体就定义了一种事物的类型,称作“类”。类是一种抽象的概念,属于该类的一个实例叫做“(7)指针数组是由构成的数组。(8)如果使用数组名称为函数参数,形实结合时,传递的是(9)在类的对象被创建的时候,函数会被自动调用。(10)在类中,成员为类的所有对象所共享。(11)有如下程序: 127#include 128classDerived:publicBase2.publicBasel{intd;public;Derived(intI,intj):Basel(j),Base2(j),{d=i;}voiddisp(){cout«"Derived:d=,'«d«";}};intmain(){DerivedobjD(l,2);objD.disp();objD.Basce::disp();objD.Based::disp();objD.Basce2::disp();return0;}请将程序补充完整,使程序在运行时输出:Derived:d=lBase:b=2Base:b=2Base:b=2(13)如下程序声明了一个电话号码类PhoneNumber,重载了流插入运算符以便于电话号码的输出。请将程序补充完整。#include 129#include 130";cout«"Areais"«shape->area()«" 131";return0;请将程序补充完整,使程序在运行时输出:objectistriangleAreais63(15)如下程序声明了一个使用两个通用数据类型的模板类dataClass,其中构造函数用于初始化两个数据成员,成员函数show用于输出两个数据成员的数值。#include 132public;dataClass(TlaT2b){i=a;j=b;}voidshow(){cout«i«","«j«* 133*;}intmain(){dataClass 134C)ABCDE12345D)54321EDCBA(2)下列叙述中正确的是()。A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D)循环队列中元素的个数是由队头指针和队尾指针共同决定(3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。A)O(n)B)O(n2)C)O(log2n)D)O(nlog2n)(4)下列叙述中正确的是()。A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间(5)数据流图中带有箭头的线段表示的是()。A)控制流C)模块调用B)事件驱动D)数据流(6)在软件开发中,需求分析阶段可以使用的工具是()。A)N-S图B)DFD图(数据流图)C)PAD图D)程序流程图(7)在面向对象方法中,不属于“对象”基本特点的是()。A)一致性B)分类性C)多态性D)标识唯一性(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()oA)一对一B)一对多C)多对一D)多对多(9)在数据管理技术发展的三个阶段中,数据共享最好的是()。A)人工管理阶段B)文件系统阶段C)数据库系统阶段D)二个阶段相同(10)有三个关系R、S和T如下: 135RsTABBCABCm113m13n235由关系R和S通过运算得到关系T,则所使用的运算为()oA)笛卡尔积B)交C)并D)自然连接(11)在下列原型所示的C++函数中,按“传值”方式传递参数的是()。A)voidfl(intx);B)voidf2(int*x);C)voidf3(constint*x);D)voidf4(int&x);(12)在C++中,编译系统自动为一个类生成缺省构造函数的务件是A)该类没有定义任何有参构造函数B)该类没有定义任何无参构造函数C)该类没有定义任何构造函数D)该类没有定义任何成员函数(13)在一个派生类的成员函数中,试图调用其基类的成员函数“voidf();",但无法通过编译。这说明()oA)f()是基类的私有成员C)派生类的继承方式为私有B)f()是基类的保护成员D)派生类的继承方式为保护(14)下列关于运算符重载的叙述中,错误的是()。A)有的运算符可以作为非成员函数重载B)所有的运算符都可以通过重载而被赋予新的含义C)不得为重载的运算符函数的参数设置默认值D)有的运算符只能作为成员函数重载(15)下列关于模板的叙述中,错误的是()。A)调用模版函数时,在一定条件下可以省略模板实参B)可以用int、double这样的类型修饰符来声明模版参数C)模板声明中的关键字class都可以用关键字typename替代D)模板的形参表中可以有多个参数 136(16)要利用C++流进行文件操作,必须在程序中包含的头文件是()。A)iostreamB)fstreamA)strstreamD)iomanip(17)下列字符串中不能作为C++标识符使用的是()。A)WHILEB)userC)IvarD)9stars(18)下列语句中错误的是(5。A)constinta;B)constinta=10;C)constint*point=0;D)constint*point=newint(10);(19)有如下程序:#include 137A)voidfun(doublea,intB);B)boolfun(inta,doubleb=0.0);(22)有如下程序:#include 138intmain(){Sampletemp[2],*pTemp[2];return0;)A)1B)2(23)下列选项中,A)重载函数C)指针C)3D)4执行这个程序输出星号(*)的个数为()。与实现运行时多态性无关的是()。B)虚函数D)引用(24)下列运算符函数中,肯定不属于类Value的成员函数的是OoA)Valueoperator+(Value);B)Valueoperator-(Value,Value);C)Valueoperator*(int);D)Valueoperator/(Value);(25)下列模板声明中,有语法错误的是()。A)template 139运行时的输出结果是()。A)112444B)11114444C)121444D)11314444(28)有如下程序:#include 140A)公有或私有B)私有C)保护或私有D)公有或保护(31)定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为()。A)私有继承B)非私有继承C)保护继承D)公有继承(32)建立一个有成员对象的派生类对象时,各构造函数体的执行次序为()。A)派生类、成员对象类、基类B)成员对象类、基类、派生类C)基类、成员对象类、派生类D)基类、派生类、成员对象类(33)如果表达式a>=b中的”>=”是作为非成员函数重载的运算符,则可以等效地表示为()。A)a.operator>=(b)B)b.operatotr>=(a)C)operator>=(a,b)D)operator>=(b,a)(34)当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为()。A)iosbase::inB)ios_base::binaryC)ios_base::in|ios_base二outD)ios_base::out(35)云一个抽象类中,一定包含有()。A)虚函数B)纯虚函数C)模板函数D)重载函数二、填空题(每空2分,共30分)|~~(1)对下列二叉树进行中序遇期必%_DC 141(2)按照软件测试的一般步骤,集成测试应在—测试之后进行。(3)软件工程三要素包括方法、工具和过程,其中,—支持软件开发的各个环节的控制和管理。(4)数据库设计包括概念设计、—和物理设计。(5)在二维表中,元组的—不能再分成更小的数据项。(6)当使用关键字—作为函数返回类型时,该函数不返回任何值。(7)已知数组a中有n个元素,下列语句将数组a中从下标xl开始的k个元素移动到从下标x2开始的k个元素中,其中0<=xl 142pumpkin(){++count;}〜pumpkin。{—count;}staticvoidtotal_count(){cout«count«"pumpkin(s)"«endl;)private:staticintcount;};intpumpkin::count=0;intmain(){pumpkinpl[10];pumpkin::total_count();return0;)这个程序的输出结果是—O(10)有如下递归函数:intFun(intn){if(n<=l)return1;请补充完整,使得函数Fun能够正确计算形参n的阶乘。(11)请在下列程序中的空格处填写正确的语句:classSample{public:Sample(){}〜Sample。{}voidSetData(intdata){〃将Sample类成员变量data设置成形参的值〃注意形参与成员同名private:intdata;};(12)有如下类定义,请将Sample类的拷贝构造函数补充yUiFloclassSample{public:Sample(){)-Sample(){if(p)deletep;)Sample(constSample&s){voidSetData(intdata){p=newint(data);} 143private:int*p;};(13)重载加法运算符“+”,其函数名是—(14)有如下程序:#include 144Cat(char*name):Pet(name){}voidcall()const{cout«"瞄唯叫";});intmain(){Pet*petl=newDog("哈克)*pet2=newCat("吉米");cout«petl->getName();petl->call();cout«end1;cout«pet2->getName();pet2->call();cout«end1;return0;}程序的输出结果是2008年9月二级C++笔试试卷参考答案一、选择题(1)B)(2)D)(3)C)(4)A)(5)D)(6)B)(7)A)(8)B)(9)C)(10)D(11)A)(12)A)(13)C)(14)B)(15)D(16)B)(17)B)(18)D)(19)A)(20)D(21)C)(22)C)(23)A)(24)D)(25)C)(26)B)(27)C)(28)B)(29)A)(30)D(31)A)(32)C)(33)A)(34)B)(35)C)二、填空题(1)DBXEAYFZC(2)单元(3)过程(4)逻辑设计(5)分量(6)void(7)X2+k-l(8)2,3(9)1Opumpkin(s)(10)elsereturnn*Fun(n-l);(11)Sample::data(12)p=newint;*p=s.*p;(13)operator+(14)8100 1452009年3月全国计算机二级笔试C++一、选择题(每小题2分,共70分)(1)下列叙述中正确的是A)栈是‘先进先出”的线性表B)队列是,先进后出”的线性表C)循环队列是非线性结构D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构(2)支持子程序调用的数据结构是A)栈B)树C)队列D)二叉树(3)某二叉树有5个度为z的结点,则该二叉树中的叶子结点数是A)10B)8C)6D)4 146(4)下列排序方法中,最坏情况下比较次数最少的是A)冒泡排序B)简单选择排序C)直接插入排序D)堆排序(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是A)编译程序B)操作系统C)教务管理系统D)汇编程序(6)下面叙述中错误的是A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行“错误定位”是程序调试的必要步骤C)程序调试通常也称为DebugD)软件测试应严格执行测试计划,排除测试的随意性(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 147A)提高耦合性降低内聚性有利他哦高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元索间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统中的核心问题是A)数据库设计B)数据库系统设计C)数据库维护D)数据库管理员培训(9)有两个关系R,S如下: 148由关系R通过运算得到关系S,则所使用的运算为A)选择B)投影C)插入D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域(11)对c++编译器区分重载函数无任何意义的信息是A)参数类型 149B)参数个数C)返回值类型D)常成员函数关键字coast(12)有如下类定义和变量定义:classA{publie:A(){data=0;}〜A(){}intGetData()coast{returndata;}voidSetData(intn){data=n;}private:intdata;);constAa;Ab;下列函数调用中错误的是A)a.GetData();B)a.SetData(10);C)b.GetData();D)b.SetData(10);
A.内联函数就是定义在另一个函数体内部的函数
B.函数体的最后一条语句必须是return语句
C.标准C++要求在调用一个函数之前,必须先声明其原型
D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
(12)由于常对象不能被更新,因此
A.通过常对象只能调用它的常成员函数
B.通过常对象只能调用静态成员函数
C.常对象的成员都是常成员
D.通过常对象可以调用任何不改变对象值的成员函数
(13)下列关于虚函数的说明中,正确的是
A.从虚基类继承的函数都是虚函数
B.虚函数不得是静态成员函数
C.只能通过指针或引用调用虚函数
D.抽象类中的成员函数都是虚函数vbr>(14)运算符重载是对已有的运算符赋予多重含义,因此
A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义
B.可以改变一个已有运算符的优先级和操作数个数
D.C++中已经有的所有运算符都可以重载
(15)模板对类型的参数化提供了很好的支持,因此
A.类模板的主要作用是生成抽象类
B.类模板实例化时,编译器将根据给出的模板实参生成一个类vbr>C.在类模板中的数据成员都具有同样类型
D.类模板中的成员函数都没有返回值
(16)下列关于C++流的说明中,正确的是
A.与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现
B.从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作
C.cin是一个预定义的输入流类vbr>D.输出流有一个名为open的成员函数,其作用是生成一个新的流对象
(17)下列符号中可以用作C++标识符的是vbr>A.radius
B.foo-bar
C.else
D.3room
(18)下列语句中,错误的是
B.constinttemp;
C.constdouble*point;
D.constdouble*rt=newdouble(5.5);
(19)有如下程序:
intx=3;
do{
x-=2;
cout<
}while(!(--x));
执行这个程序的输出结果是
A.1
B.30
C.1-2
D.死循环
(20)有如下程序:vbr>#include〈br>usingnamespacestd;
intmain()
{
int*p;
*p=9;
cout<<"Thevalueatp:"<<*p;
retum0;vbr>}vbr>编译运行程序将出现的情况是vbr>A.够编译时出现语法错误,不能生成可执行文件
B.运行时一定输出:Thevalueatp:9
C.运行时一定输出:Thevalueatp:*9
D.运行时有可能出错
(21)有如下程序:#include
此文档下载收益归作者所有