历年计算机二级C++笔试试题及答案

历年计算机二级C++笔试试题及答案

ID:83046355

大小:303.49 KB

页数:245页

时间:2023-09-20

上传者:无敌小子
历年计算机二级C++笔试试题及答案_第1页
历年计算机二级C++笔试试题及答案_第2页
历年计算机二级C++笔试试题及答案_第3页
历年计算机二级C++笔试试题及答案_第4页
历年计算机二级C++笔试试题及答案_第5页
历年计算机二级C++笔试试题及答案_第6页
历年计算机二级C++笔试试题及答案_第7页
历年计算机二级C++笔试试题及答案_第8页
历年计算机二级C++笔试试题及答案_第9页
历年计算机二级C++笔试试题及答案_第10页
资源描述:

《历年计算机二级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++函数的说明中,正确的是
A.内联函数就是定义在另一个函数体内部的函数
B.函数体的最后一条语句必须是return语句
C.标准C++要求在调用一个函数之前,必须先声明其原型
D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
(12)由于常对象不能被更新,因此
A.通过常对象只能调用它的常成员函数
B.通过常对象只能调用静态成员函数
C.常对象的成员都是常成员
D.通过常对象可以调用任何不改变对象值的成员函数
(13)下列关于虚函数的说明中,正确的是
A.从虚基类继承的函数都是虚函数
B.虚函数不得是静态成员函数
C.只能通过指针或引用调用虚函数
D.抽象类中的成员函数都是虚函数vbr>(14)运算符重载是对已有的运算符赋予多重含义,因此
A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义
B.可以改变一个已有运算符的优先级和操作数个数

24C.只能重载C++中已经有的运算符,不能定义新运算符
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)下列语句中,错误的是

25A.constintbuffer=256;
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

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(7)或FUN(7)九月(1)下列选项中不符合良好程序设计风格的是oA)、源程序要文档化B)、数据说明的次序要规范化C)、避免滥用got。语句D)、模块设计要保证高耦合,高内聚(2)从工程管理角度,软件设计一般分为两步完成,它们是0A)、概要设计与详细设计B)、数据设计与接口设计C)、软件结构设计与数据设计D)、过程设计与数据设计(3)

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#incIudeusingnamespacestd;intmain(){2006年9月二级C++考试试卷第6页(共5页)count«setpresision(3)«fixed«setfiII()«setw(8);count«12,345««34,567;returnO;)若程序的输出是:#*12。345**34。567则程序中下划线处遗漏的操作符是oA)、setprecision(3)B)、fixedC)、setfiII('*')D)、stew(8)

60(27)有如下程序#incIude#includeusingnamespacestd;cIassMyCIass{pubIic:MyClassO{cout«,A";}MyCIass(chare{cout«c;)~MyClass(){sout«,B";});Intmain(){MyCIasspl,*p2p2=newMyCIass('X');deIetep2;returnO;)2006年9月二级C++考试试卷第7页(共5页)执行这个程序幕上将显示输出oA)、ABXB)、ABXBC)、AXBD)、AXBB(28)有如下程序

61#incIudeusingnamespacestd;inti=1;cIassFun{pubIic;staticinti;intvaIue(){returni_1}intvaIue()const{returni+1;));intFun;;i=2;intmain(){inti=3;FunFunlconstFunfun2;returnO;1若程序的输出结果是:123则程序中下划线处遗漏的语句是OA)、cout«fun1,vaIue0Fun::i«fun2,vaIue();B)、cout«Fun::i«fun10vaIue()«fun2,vaIue();2006年9月二级C++考试试卷第8页(共5页)C)、cout«fun1ovaIue()«fun2ovaIue()«Fun::i;

62D)、cout«fun20vaIue()«fun::i«fun10vaIue();(29)有如下程序#incIudeusingnamespacestd;cIassObj{staticinti;pubIic:Obj(){i++;)~Obj(){i—;}staticintgetVaI(){teturni;});intObj::i=0;voidf(){0bjob2;cout«ob2ogetVaI();}intmain(){ObjobI;FO;Obj*ob3=newObj;cout«ob3->getVaI();DeIeteob3;cout«0bj::getVaI();ReturnO;)程序的输出结果是OA)、232B)、2310、222D)、221

63(30)有如下程序2006年9月二级C++考试试卷第9页(共5页)#incIudeusingnamespacestd;cIassBase{protected;Base(){cout«,A';}Base(chare){cout«c;});cIassDerived;pubIicBase{pubIic:Derived(chare){cout«c;)};intmain(){Deriveddl(

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)有如下程序#incIudeusingnamespacestd;cIassA{pubIic:virtuaIVoidfuncI0{cout«<4A1n;)voidfune2(){cout«"A2”;});cIassB:pubIicA{pubIic:voidfund(){cout«"B1”;}voidfunc2(){cout«UB2V;});Intmain(){A*p=newB;p->funcI();2006年9月二级C++考试试卷第12页(共5页)p->func2();

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;iusingnamespacestd;cIassFoo{pubIic:Foo(intX){cout«,A”}FooO{});

69intmain()Foof[3],g(3);returnO;)(10)习惯性在下列程序的输出结果是42,请将画线处缺失的部分补充完整。#incIudeUsingnamespaceatd;CIassFoo{intvaIue;2006年9月二级C++考试试卷第14页(共5页)pubIic:Foo():vaIue(0){)VoidsetVaIue(intvaIue){[10]=value;〃给Foo的数据成员value赋值}voidprint(){cout«vaIue;});Intmain()Foof;fosetVaIue(42);

70foprint();retumO;}(11)如果不能使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基数继承的成员,下列程序没有使用多态机制,其输出结果是[11]。#incIudeusingnamespacestd;cIassBase{pubIic:Voidprint(){cout«'B';}};cIassDerived:pubIicBase{pubIicvoidprint(){cout«'D';}}intmain(){2006年9月二级C++考试试卷第15页(共5页)Derived*pd=newDreived);Base*pb=pd;pb->print();

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;i0;—j){

73if(t>a[j-1])break;a[j]=a[j-1];)protected:int*a,n;〃指针a用于存放数组首地址,n用于存放数组元素个数};(15)下列程序的输出结果是[15]#incIudeusingnamespacestd;cIassA{intapubIic:AO:a(9){)2006年9月二级C++考试试卷第17页(共5页)virtuaIvoidprint0const{cout«a;);};cIassB:pubIicA{charb;pubIic:

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<Usingnamespacestd;

107Classmyclass{Public:MyClass(){++count;}MyClass(){--count;}Staticintgetcount(){returncount;}PrivateStaticintcount;);IntMyClass::count=0;Intmain(){Myclassobj;Cout<

108(28)有如下程序“includeUsingnamespacestd;ClassMyclass{Public;Myclassconst(x):ual(x)<}Uoidprint()constUsingnamespacestd;Classpart{Public;Part(intx=(\):val(x){cout,,val;}-part(){cout<

109Whole(intx,inty,intz=0):p2(x),pl(y),val(z){cout<Usingnamespacestd;Classbase{Public:Base(intx=0){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)有如下程序:#includeUsingnamespacesid;Classbase{Public;Voidoutput(){cout<

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()Usingnamespacestd:ClassB{

113Public:Virtualvoidshow(){cout«wb";});ClassD:publicB{Public:Voidshow(){cout<show();}Voidfun2(B&ref){ref.show();}Voidfun3(Bb){b.show();}Intmain(){Bb,*p=newD;Dd;Funl(p);Fun2(b);Fun3(d);Return();程序的输出结果是ADBDBBBDCDBBDDBD二、填空题(每空2分,共三十分)

114(1).请将每一个空的正确答案写在答题卡【1】~【15]序号的横线上,答在试卷上不得分。(2).软件需求规格说明书应具有完整性、无歧视性、正确性、可验证性、可修改性等特征,最重要的是.(3).在两种基本测试方法中测试的原则之一是保证所测模板中每一个独立路径至少要执行一次。(4).线性表的存储结构主要分为顺序存储结构和链式储存结构。队列中是一种特殊的线性表。循环队列是队列的存储结构。(5).对下列二叉树进行中序遍历的结果为.(6).在E-R图中,矩形属于在有定义语句:inta=3,b=2,c=l;则表达式a

115returns则在某程序中第二次执行函数用语句f();时,函数f的返回值是•(9)已知如下程序得输出结果时23,请将划线处缺失得部分补充完整。#includeUsingnamespacestd;Classmyclass{Public:Voidprint()cout{cout<<23;))Intmain(){Myclass*p=newmyclass();print();Return();Classsample{Public:Sample(){)(13)有如下复数类的声明,请补充完整。Classconplex(Doublereal;//实部Doubleimag;〃虚部Public:

116Conple(doublex.doubley){Real=x;Imag=y;>Complexoperator♦(complexc){〃重载加法运算符Returncomplex();>>;(14)请将如下程序补充完整,使得输出结果为bbaaftincludeUsingnamespacestd;ClassA{Public:{cout<<>>aa”;});ClassB:publicA{Public:〜B(){cout<<"bb";}};Intmain(){B*p=newB;Deletep;Return();(15)请将下列栈类stack补充完整Classstack{Private;Intplist[100];//int数组,用于存放栈的兀素

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)下面是一个模板声明的开始部分:tempiutedouble由此可知A)这可能是一个函数模板的声明B)这可能是一个类模板的声明C)这既可能是一个函数模板的声明,也可能是一个类模板的声明D)这肯定是一个错误的模板声明(26)有如下4个语句:①cout«'A'«setfill(,*')«left«setw(7)«,B'«endl;②cout«setfill('*')«left«setw(7)«'A'«,B,«endl;③cout«'A'«serfill('*')«right«setw(7)«'B'«endl;(4)cout«setfill('*,)«right«setw(7)«'A,«'B'«endl;其中能显示A******B的是A)①和③B)①和④C)②和③D)②和④(27)有如下类定义:classMyClass{

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)有如下程序:#includeusingnamespacestd;classVAC{public;intf()const{return3;}intf(){return5;});Intmain(){VACvl;constVACv2;cout«vl.f()«v2.f();fetum0;运行时的输出结果是A)53B)35C)55D)33(30)有如下类声明:classBase{protected;intamount;public;Base(intn=0):amount(n){}

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)有如下程序:#includeusingnamespacestd;classBase{intx;public;Base{intn=0};x(n){cout«n;}IntgetX()const{returnx;}};classDerivedpublicBase{inty;public;Derived(intm,intn):y(m),Base(n){cout«m;}Derived(intm):y(m){cout«m;}};intmain(){Deriveddl(3),d2(5,7);Return0;运行时的输出结果是A)375B)357C)0375D)0357(32)下列有关抽象类和纯虚函数的叙述中,错误的是A)拥有纯虚函数的类是抽象类,不能用来定义对象B)抽象类的派生类若不实现纯虚函数,它也是抽象类

125C)纯虚函数的声明以“=0;”结束D)纯虚函数都不能有函数体(33)有如下程序:#includeUsingnamespacestd;ClassAmount{intamount;public;Amount(intn=0):amount(n){}IntgetAmount()const{returnamount;}Amount&operator+=(Amounta){amount+=a.amount;return;}};,intmain(){Amountx(3),y(7);x+=y;cout«x.getAmount()«endl;return0;}已知程序的运行结果是10,则下划线处缺失的表达式是A)*thisB)thisC)&amountD)amount(34)下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的"vusingnamespacestd;classGA{public;virtualintf(){return1;}

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#includeusingnamespacestd;classBase{public;intm,n;};classDerived1:Base{};classDerived2:publicDerived1{public:voidSetMN(intM,intN){M=M;n=N;}intGetSumMN(){return(m+n);}};intmain(){Derived2objD;objD.SetMN(3,4);cout«"M+N="«objD.m+bojD.n«endl;return0;}编译时只有“coutusingnamespacestd;classBase{intb;public;Base(inti){b=i;}voiddisp(){cout«"Base:b="«b«;}};classbase);virtualpublicBase{public;Basel(inti):Base(i){}};classBase2:virtualpublicBasc{public;Base2(inti):Base(i){}};^^

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#include#includeusingnamespacestd;classPhoneMumber{public;voidsetNumber(stringnumber){this->number=number;}〃重载流插入操作符friend(ostream&output,constPhoneNumber&num){output«num.number;returnoutput;}private;stringnumber;};intmain(){PhoneNumberphone;phone.setNumber("8008100598");cout«"Thephonenumberis:'*«phone«endl;return0;)(14)如下程序声明了一个二维图形类TwoDShape,从其派生出矩形类Reco

129#include#includeusingnamespacestd;classTwoDShape{〃二维图形类charname[20];public;TwoDShape(char*n="unknown"){strcpy(name,n);}char*getNa:ne(){returnname;}=0;};classRec:publicTwoDShape{doublewidth,height;public;Rec(doublew=0.0,doubleh=0.0):TwoDShape("rectamgle"){width=w;height=h;}doublegetWidth(){returnwidth;}doublegetHeight(){returnheight;}doublearea(){returnwidth*height;}intmain(){TwoDShape*shape;shape=newRec(2.1,3.0);cout«"objectis"«shape->getName()«"

130";cout«"Areais"«shape->area()«"

131";return0;请将程序补充完整,使程序在运行时输出:objectistriangleAreais63(15)如下程序声明了一个使用两个通用数据类型的模板类dataClass,其中构造函数用于初始化两个数据成员,成员函数show用于输出两个数据成员的数值。#includeusingnamespacestd;TH;T2j;

132public;dataClass(TlaT2b){i=a;j=b;}voidshow(){cout«i«","«j«*

133*;}intmain(){dataClassobl(10,0.23);dataClassob2(,X,,"mydata");obi.show();ob2.show();return0;}请将程序补充完整,使程序在运行时输出:10,0.23X,mydata2008年4嗝二级C++笔试试题答案一、选择题(1)C(2)A(3)B)(4)B)(5)A)(6)D(7)B(8)C(9)D)(10)C)(11)C(12)B(13)D(14)A(15)B)(16)A(17)C(18)D(19)B(20)B)(21)D(22)C(23)B(24)B(25)A)(26)C)27)A(28)D(29)A(30)B)(31)C(32)D(33)D(34)B(35)C)二、填空题(1)输出(2)16(3)24(4)关系(5)数据定义语言(6)对象(7)指针或指针变量(8)地址(9)构造(10)静态(11)private(12)Base(j)(13)PhoneNumberoperator«(14)virvaldoublearea()(15)templateclassdataClass2008年9月计算机等级考试二级C++笔试试题一、选择题(每小题2分,共70分)(1)一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是OoA)123456ABCDEB)EDCBA54321

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)有如下程序:#includeusingnamespacestd;intmain(){intsum;fbr(inti=0;i<6;i+=3){sum=i;fdr(intj=i;j<6;j++)sum+=j;)cout«sum«end1;return0;)运行时的输出结果是()。A)3B)10C)12D)15(20)下列语句中,正确的是()。A)char*myString-'Hello-World!";B)charmyString="Hello-World!";C)charmyString[11]="Hello-World!";D)charmyString[12]="Hello-World!(21)若已经声明了函数原型“voidfun(inta,doubleb=0.0);,\则下列重载函数声明中正确的是()。A)voidfun(inta=90,doubleb=0.0);B)intfun(inta,doubleB);

137A)voidfun(doublea,intB);B)boolfun(inta,doubleb=0.0);(22)有如下程序:#includeusingnamespacestd;classSample{public:Sample(){}~Sample(){cout«'*';}};’

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)templateTfun(Tx){returnx;}B)templateTfiin(Tx,intn){returnx*n;}C)templateTfun(T*p){return*p;}D)templateTclassA{Tn;};(26)在语句“coutw'A丁中,cout是(>A)类名B)对象名C)函数名D)C++的关键字(27)有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(inti=0){cout«l;}MyClass(constMyClass&x){cout«2;}MyClass&operator=(constMyClass&x){cout«3;retum*this;}〜MyClass。{cout«4;}intmain(){MyClassobjl(l),obj2(2),obj3(obj1);return0:}

139运行时的输出结果是()。A)112444B)11114444C)121444D)11314444(28)有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(intx):val(x){}voidSet(intx){val=x;}voidPrint()const{cout«"val="«val«,\t,;}private:intval;};,intmain(){constMyClassobj1(10);MyClassobj2(20);obj1.Print。;〃语苞1obj2.Print。;〃语句2objl.Set(20);〃语句3obj2.Set(30);//语句4return0;}其主函数中错误的语句是()。A)语句1B)语句2C)语句3D)语句4(29)在类声明中,紧跟在“public:“后声明的成员的访问权限是()oA)私有B)公有C)保护D)默认(30)对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是()。

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=x1;i—)a[_]=a[i];(8)有如下程序:#includeusingnamespacestd;intfiinl(intx){retum++x;}intfun2(int&x){retum++x;}intmain(){intx=l,y=2;y=ftml(fun2(x));cout<usingnamespacestd;classpumpkin{public:

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)有如下程序:#includeusingnamespacestd;classWages{〃"工资''类doublebase;//基本工资doublebonus;//奖金doubletax;//税金public:Wages(doubleCBase,doubleCBonus,doubleCTax):base(CBase),bonus(CBonus),tax(CTax){}doublegetPay()const;//返回应付工资额Wagesoperator+(Wagesw)const;〃重载力口法};doubleWages::getPay()const{returnbase+bonus-tax;}WagesWages::operator+(Wagesw)const{returnWages(base+w.base,bonus+w.bonus,tax+w.tax);intmain(){Wageswl(2000,500,100),w2(5000,l000,300);cout«(wl+w2).getPay()«endl;retun0;程序的输出结果是—(15)有如下程序:#includeusingnamespacestd;classPet{charname[10];public:Pet(char*name){strcpy(this->name,name);}constchar*getName()const{returnname;}virtualvoidcall()const=0;);classDog:publicPet{public:Dog(char*name):Pet(name){}voidcall()const{cout«"汪汪叫";}};classCat:publicPet{public:

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);

150(13)有如下类定义和变量定义:classParents{public:intpublicuata;private:intprivateData;);classChildA:publicParents{/*类体略*/};classChildB:privateParents{/*类体略*/);ChildAa;ChildBb;下列语句中正确的是A)cout<

151(15)下列关于函数模板的描述中,错误的是A)从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准B)对于常规参数所对应的模板实参,任何情况下都不能省略C)虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参D)模板参数表不能为空(16)要建立文件流并打开当前目录下的文件file.dat用于输入,下列语句中错误的是A)ifstreamfin=ifstream.open("file.dat”);B)ifstream*fir.=newifstream("file.dat”);C)ifstreamfin;fin.open("file.dat");D)ifstream*fin=newifstream();fin->open("file.dat");(17)下列描述中,不属于面向对象思想主要特征的是A)封装性B)跨平台性C)继承性D)多态性

152(18)有如下程序段:inti=4;intj=I;intmain(){inti=8,j=i;cout<

153chara[3][4];下列表达式中错误的是A)a[2]=,lWIN"B)strcpy(a[2],"WIN")C)a[2][3]='W'D)a[0][1]=a[0][1](21)已知函数fun的原型为intfun(int,int,int);下列重载函数原型中错误的是A)charfun(int,int);B)doublefun(int,int,double);C)intfun(int,char*);D)floatfun(int,int,int);(22)建立一个类对象时,系统自动调用A)析构函数B)构造函数C)静态函数D)友元函数

154(23)通过派生类的对象可直接访问其A)公有继承基类的公有成员B)公有继承基类的私有成员C)私有继承基类的公有成员D)私有继承基类的私有成员(24)己知表达式++a中的“++”是作为成员函数重载的运算符,则与十+a等效的运算符函数调用形式为A)a.orerator++(1)B)operator++(a)C)operator++(a,I)D)a.operator++()(25)在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是A)()B)[]C)<>D)()(26)当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为A)ios_base::in

155A)ios_base::in|ios_base::outB)ios_base::outC)ios_base::in&ios_base::out(27)有如下程序:#include#includeusingnamespacestd;classXCD{char*a;intb;public:XCD(char*aa,intbb){a=newchar[strlen(aa)+1];strcpty(a,aa);b=bb;)Char*Geta(){returna;)intGetb(){returnb;});intmain(){char*pl="abed",*p2="weirong";

156intdl=6,d2=8;XCDx(pl.dl),Y(p2,d2);cout<#includeusingnamespacestd;classXCF{inta;public:XCF(intaa=0):a(aa){cout<<,l1}XCF(XCF&x){a=x.a;cout<<,,2,,;)〜XCF(){cout<

157);intmain(){XCFdl(5),d7(dl);XCF*pd=newXCF(8);cout<Geta();deletepd;return0;)运行时的输出结果是A)121SS88B)12188SSC)12185D)128512(29)已知类MyClass声明如下:classMyClass{intn;public;MyClass(intk):n(k){}intgetValue()const{returnn;});在下列数组定义中正确的是A)MyClassx1[2];

158A)MyClassx2[2]={newMyClass(1),newMyClass(2));B)MyClass*x3[2];C)MyClass*x4[2]={MyClass(1),MyClass(2)};(30)有如下程序:#includeusingnamespacestd;classAA{intk;protected:intn;voidsetK(intk){this->k=k;}public:voidsetN(intn){this->n=n;});classBB:public}{/*类体略*/};intmain(){BBx_;//1x.n=1;//2x.setN(2);//3x.k=3;//4x.setK(4);

159return0;)在标注号码的四条语句中正确的是A)1B)2C)3D)4(31)有如下类定义:classXX{intxx;public:XX():xx(0){cout<<'A';}XX(intn):xx(n){tout<<'B';});classYY:publicXX{intyy;public:YY():yy(0){cout+yy;}YY(intn):XX(n+1),yy(n){cout<

160下列选项中,输出结果为AO的语句是A)YYy1(0,0);B)YYy2(1);C)YYy3(0);D)YYy4;(32)有如下程序:#includeusingnamespacestd;classA{public:virtualvoidf(){cout+1;}voidg(){cout<<2;});classB:publicA{public:virtualvoidf(){cout<<3;}voidg(){ecut<<4;});voidshow(A&a){a.f();a.g();}intmain(){Bb;show(b);return0;

161)运行时的输出结果是A)12B)34C)14D)32(33)有如下程序:#includeusingnamespacestd;classPair{intm;intn;public:Pair(inti,intj):m(i),n(j){}bootoperator>(pairp)const;〃须在类体夕卜给出定义};intmain(){PairAl(3,4),p2(4,3);p3(4,5);cout<<(pl>p2)<<(P2>P1)<<(p2>p3)<<(p3>p2);return0;

162)运算符函数。operator〉的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。比较规则是首先比较两对象的m成员,m大者为大;当m相等时比较n,n大者为大。程序输出0101,下列对运算符重载函数的正确定义是A)boolPair::operator>(Pairp)const{if(m!=p.m)returnm>p.m;returnn>p.n;}B)boolPair:;operator>(Pairp){if(m!=p.m)returnm>p.m;returnn>p.n;}C)boolPair::operator>(Pairp)const{if(m>p.m)returntrue;returnn>p.n;}D)boolPair:;operator>(Pairp){if(m>p.m)returntrue;returnn>p.n;}(34)假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是A)cout<

163(35)有如下程序:#includeusingnamespacestd;classONE{intc;public:ONE():c(0){cout<<1;}ONE(intn):c(n){cout<<2;});classTWO{ONEonel;ONEone2;public:TWO(intm):one2(m){cout<<3;});intmain(){TWOt(4);return0;)运行时的输出结果是A)3

164A)23B)123C)213二、填空题(每空2分,共30分)(1)假设用一个长度为50的数组(数组元索的下标从0到49)作为栈的存化空间,栈底指针bottom指间栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30D)组下标),则栈中具有【1】个元素。(2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于【2】测试。(3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和【3】。(4)数据库系统的核心是【4】。(5)在E-K图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是【5】框。(6)有如下程序段:intx=1,Y=2,z=3;x=xAz;y=yAz;

165z=xAy;cout<

166intsum(intn){if(n==0)return0;elsereturnn+sum(n-1);)在执行sum(10)的过程中,递归调用sum函数的次数是【9】。(10)非成员函数应该声明为类[10]函数才能访问该类的私有成员。(11)有如下程序:#includeusingnamespacestd;classMonitor{public:Monitor(chart):type(t){}voidprint()const{cout<<"Thetypeofmonitoris"v

167classComputer{public:Computer(inti,charc):[11]{}voidPrint()const{cout<<"Thecomputeris"<usingnamespacestd

168classAnimal{public:virtualchar*getType()const{return11Animal";}virtualchar*getVoice()const{return"Voice";});ClassDog:publicAnimal{

169public:char*getType()const{return“Dog";}char*getVoice()const{return“Woof”});voidtype(Animal&a){cout<

170public:Cylindr(doubleradius=0,doubliheight=0):Circle(radius),h(height){}VirtualdoubleArea(){〃计算圆柱体的表面积return2*PI*r*(r+h);));(14)补充完整下面的类定义:classXCH{char*a;public:XCH(char*as){〃构造函数a=newchar[strlen(aa)+1];strcpy(a,aa);)XCH&operator=(constXCH&x)〃重载赋值函数Delele[]a;A=newchar[strlen(x.a)+I];strcpy(a,x.a)[14];)~XCH(){delete[]a;}

171);(15)补充完整下面的模板定义:template〃Type为类型参数classXtwo{//由两个Type类型的数据成员构成的模板类Typea;Typeb;public:Xtwe(Typeaa=0,Typebb=0):a(aa),b(bb)()intCompare(){〃比较a和b的大小if(a>b)returm1;elseif(a==b)return0;elsereturn-1;)TypeSnm(){returna+b;}〃返回a和b之和TypeMult();〃函数声明,返回a和b之乘积};Template[151::Mult(){returna*b;}//Mult函数的类外定义答案:一:选择题:(1)D(2)A(3)C(4)D(5)C(6)A(7)B(8)A(9)B(10)C

172(11)A(12)D(13)B(14)B(15)C(16)D(17)A(18)B(19)B(20)C(21)B(22)B(23)A(24)D(25)B(26)A(27)A(28)A(29)C(30)D(31)C(32)A(33)A(34)C(35)D二、填空题(1)19(2)白盒(3)顺序结构(4)数据库管理系统(5)菱形(6)100(7)Linel.x1或Linel.x2(8)Imagel.Left(9)KeyAscii(10)Combol.Text(11)Input(12)ch

173(7)Len(mystr)(8)1(9)a(k)2009年9月全国计算机二级笔试C++一、选择题(1-10,21-40每题2分,11-20每题1分)(1)下列数据结构中,属于非线性结构的是A)循环队列B)带链队列C)二叉树D)带链栈(2)下列数据结构中,能够按照“先进后出”原则存取数据的是A)循环队列B)栈C)队列D)二叉树(3)对于循环队列,下列叙述中正确的是A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针

174(4)算法的空间复杂度是指A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是A)可封装B)自顶向下C)模块化D)逐步求精(7)软件详细设计产生的图如下:

175该图是A)N-S图B)PAD图C)程序流程图D)E-R图(8)数据库管理系统是A)操作系统的一部分B)在操作系统支持下的系统软件C)一种编译系统D)一种操作系统(9)在E-R图中,用来表示实体联系的图形是A)椭圆形B)矩形C)菱形D)三角形(10)有三个关系R,S,和T如下:R

176

177其中关系T由关系R和S通过某种操作得到,该操作为A)选择B)投影

178C)交D)并(11)已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则A)FA必须定义在FB之前B)FB必须定义在FA之前C)若FA定义在FB之后,则FA的原型必须出现在FB的定义之前D)若FB定义在FA之后,则FB的原型必须出现在FA的定义之前(12)有如下两个类定义classAA{};classBB{AAv1,*v2;BBv3;int*v4;);其中有一个成员变量的定义是错误的,这个变量是A)v1B)v2

179C)v3D)v4(13)有如下类定义:classXX{intxdata;public:XX(intn=0):xdata(n){});classYY:publicXX{intydata;public:YY(intm=0,intn=0):XX(m),ydata(n){}};YY类的对象包含的数据成员的个数是A)1B)2C)3D)4(14)下列有关运算符函数的描述中,错误的是A)运算符函数的名称总是以operator为前缀B)运算符函数的参数可以是对象

180C)运算符函数只能定义为类的成员函数D)在表达式中使用重载的运算符相当于调用运算符重载函数(15)下列关于模板形参的描述中,错误的是A)模板形参表必须在关键字template之后B)模板形参表必须用括弧()括起来C)可以用class修饰模板形参D)可以用typename修饰模板形参(16)在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是A)ios_base::curB)ios_base::begC)ios_base::outD)ios_base::end(17)下列字符串可以用作C++标识符的是A)2009varB)gotoC)test-2009D)123

181(18)下列枚举类型的定义中,包含枚举值3的是A)enumtest{RED,YELLOW,BLUE,BLACK};B)enumtest{RED,YELLOW=4,BLUE,BLACK};C)enumtest{RED=-1,YELLOW,BLUE,BLACK};D)enumtest{RED,YELLOW=6,BLUE,BLACK};(19)有如下程序段:int』1;while(1){i++;if(i==10)break;if(i%2==0)cout<<**}执行这个程序段输出字符*的个数是A)10B)3C)4D)5(20)已知数组arr的定义如下:intarr[5]={1,2,3,4,5};下列语句中输出结果不是2的是A)cout<<*arr+1<

182A)cout<

183(23)下列关于虚基类的描述中,错误的是A)使用虚基类可以消除由多继承产生的二义性B)构造派生类对象时,虚基类的构造函数只被调用一次C)声明"classB:virtualpublicA”说明类B为虚基类D)建立派生类对象时,首先调用虚基类的构造函数(24)将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是A)不合法的运算符B)一元运算符C)无操作数的运算符D)二元运算符(25)有如下模板声明:templateclassA;F列声明中,与上述声明不等价的是A)templateclassA;B)templateclassA;C)templateclassA;D)templateclassA;(26)下列关于C++流的描述中,错误的是

184A)cout>>'A,表达式可输出字符AB)eof()函数可以检测是否到达文件尾C)对磁盘文件进行流操作时,必须包含头文件fstreamD)以ios_base::out模式打开的文件不存在时,将自动建立一个新文件27)有如下程序:#includeusingnamespacestd;classToy{public:Toy(char*_n){strcpy(name,_n);count++;}~Toy(){count--;}char*GetName(){returnname;}staticintgetCount(){returncount;}private:charname[10];staticintcount;);intToy::count=0;intmail(){Toyt1(,,Snoopy,,),t2(,lMickey),),t3("Barbie");cout<

185)运行时的输出结果是A)1B)2C)3D)运行时出错(28)有如下程序#includeusingnamespacestd;classA{public:A(inti):rl(i){}voidprint(){cout<<'e'<

18629)有如下程序:#includeusingnamespacestd;className{charname[20];public:Name(){strcpy(name,"");cout<<)Name(char*fname)){strcpy(name,fname);cout<));intmain(){Namenames[3]={Name("张三"),Name("李四")};Return0;)运行此程序输出符号?的个数是A)0B)1C)2D)3(30)有如下程序:#includeusingnamespacestd;public:AA(){cout<<'1';});classBB:publicAA{intk;

187public:BB():k(0){cout<<'2';}BB(intn):k(n){cout<<,3>;}}intmain(){BBb(4),c;return0;运行时的输出结果是A)1312D)132C)32D)1412(31)有如下程序:#includeusingnamespacestd;classCl{public:〜Cl(){cout<

188Cl*cbl;return0;}运行时的输出结果是A)121B)21C)211D)12(32)有如下程序#includeusingnamespacestd;classPublication{〃出版物类charname[30];public:Publication(char*name=〃未知名称〃){strcpy(this->name,name);constchar*getName()const{returnname;}virtualconstchar*getType()const{return〃未知类型〃;}};classBook:publicPublication{〃书类public:Book(char*name):Publication(name){}

189virtualconstchar*getType()const{return〃书〃;}};voidshowPub1ication(Publication&p){cout<

190(33)下列关于运算符重载的描述中,错误的是A)::运算符不能重载B)类型转换运算符只能作为成员函数重载C)将运算符作为非成员函数重载时必须定义为友元D)重载口运算符应完成“下标访问”操作(34)有如下程序:#include#includeUsingnamespacestd;intmain(){ints[]={123,234};cout<

191234234***23234***(35)有如下类定义classA{char*a;public:AO:a(0){}A(char*aa){〃把aa所指字符串拷贝到a所指向的存储空间a-;strcpy(a,aa);strcpy(a,aa);}~A(){delete[]a;});横线处应填写的表达式是A)neschar[strlen(aa)+1]B)char[strlen(aa)+1]C)char[strlen(aa)]D)newchar[sizeof(aa)-1]二、填空题(每空2分,共30分)(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。

192(2)程序流程图中的菱形框表示的是【2】。(3)软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中【3】阶段产生“软件需求规格说明书”。(4)在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么“学生”和“可选课程”的联系为【4】o(5)人员基本信息一般包括:身份证号,姓名,性别,年龄等。其中可以作为主关键字的是【5】。(6)若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为【6】。(7)有如下循环语句:For(inti=50;i>20;i-=2)cout<

193a[0]=a[size-l];a[size-l]=k;reverse(a+1,[9]);(10)类Sample的构造函数将形参data赋值给数据成员datao请将类定义补充完整。classSample{public:Sample(intdata=O);Private:Intdata;);Sample::Sample(intdata){【10】(ID有如下类定义:classSample{public:Sample();〜Sample();

194Private:Staticintdate;);将静态数据成员data初始化为0的语句是【111o(12)“图形"类Shape中定义了纯虚函数CalAreaO,“三角形”类Triangle继承了类Shape,请将Triangle类中的CalArea函数补充完整。classShape{public:virtualintCalArea()=0;}classTriangle:publicShape{public:Triangle{ints,inth}:side(s),height(h){}【12】{returnside*height/2;}private:intside;intheight;);

195(13)有如下程序:ttincludeusingnamespacestd;classGrandChild{public:GrandChiId(){strcpy(name,“Unknown");}constchar*getName()const{returnname;}virtualchar*getAddress()const=0;private:charname[20];};classGrandSon:publicGrandChild{public:GrandSon{char*name}(}Char*getAddress()const{return“Shanghai”;}};intmain(){GrandChild*gs=newGrandSon("Feifei");cout<getName()<<“住在,z<getAddress()<

196运行时的输出结果是【13】o(14)如下程序定义了“单词”类word,类中重载了《运算符,用于比较“单词”的大小,返回相应的逻辑值。程序的输出结果为:AfterSorting:HappyWelcome,请将程序补充完整。

197ttincludettincludeusingnamespacestd;classWord{public:Word(strings):str(s){}stringgetStr(){returnstr;}const[14]const{return(strclassData{public:

198voidput(Tv){val=v;}【15】getO〃返回数据成员val的值,返回类型不加转换{returnval;}private:Tval;};2009年9月全国计算机等级考试二级C++笔试参考答案选择题(1)C(2)B(3)D(4)A(5)B(6)A(7)C(8)B(9)C(10)D(H)D(12)C(13)B(14)C(15)B(16)A(17)D(18)A(19)C(20)D(21)B(22)D(23)C(24)B(25)D(26)A(27)C(28)B(29)D(30)A(31)B(32)D(33)C(34)B(35)A填空(1)14(2)判断(3)需求分析(4)多对多(5)身份证号

199(6)double⑺15(8)*(p+i)(9)size-1(10)this->data-data;(11)intSample::data=0;(12)intCalArea(size,height)(13)Unknown住在Shanghai(14)booloperator<(Wordw)(15)T2010年3月计算机等级考试二级C++笔试试题(文字版)一、选择题(1)下列叙述中正确的是啊AA)对长度为n的有序链表进行查找,最坏清况下需要的比较次数为nB)对长度为n

200的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)(2)算法的时问复杂度是指DA)算法的执行时间B)算法所处理的数据量C)算法程序中的语司或指令条数D)算法在执行过程中所需要的基本运算次数(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是BA)编辑软件B)操作系统C)教务管理系统D)浏览器(4)软件(程序)调试的任务是A

201A)诊断和改正程序中的错误B)尽可能多地发现程序中的错误C)发现并改正程序中的所有错误D)确定程序中错误的性质(5)数据流程图(DFD图)是CA)软件概要设计的工具B)软件详细设计的工具C)结构化方法的需求分析工具D)面向对象方法的需求分析工具(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于BA)定义阶段B)开发阶段C)维护阶段D)上述三个阶段(7)数据库管理系统中负责数据模式定义的语言是A

202A)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是DA)文件B)数据库C)字段D)记录(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的AA)需求分析阶段B)逻辑设计一阶段C)概念设计阶段D)物理设计阶段(10)有两个关系R和T如下:

203则由关系K得到关系T的操作是AA)选择B)投影C)交D)并(11)以下叙述正确的是BA)C语言程序是由过程和函数组成的B)C语言函数可以嵌套调用,例如:fun(fun(x))C)C语言函数不可以单独编译D)C语言中除了main函数,其他函数不可作为单独文件形式存在(12)以下关于C语言的叙述中正确的是BA)C语言中的注释不可以夹在变量名或关键字的中间B)C语言中的变量可以在使用之前的任何位置进行定义

204C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致D)C语言的数值常量中夹带空格不影响常量值的正确表示(13)以下C语言用户标识符中,不合法的是DA)_lB)AaBcC)a_bD)a—b(14)若有定义:doublea=22;inti=0,k=18;,则不符合C语言规定的赋值语句是CA)a=a++,i++;8)i=(a+k)<=(i+k);C)i=a%l1;D)i=!a;(15)有以下程序ttincludemain()

205{chara,b,c,d;scanf("%c%c”,&a,&b);c=getchar();d=getchar();printf("%c%c%c%c

206”,a,b,c,d);当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:回车也是一个字符)1234则输出结果是CA)1234B)120123D)1234(16)以i关于C语言数据类型使用的叙述中错误的是D

207A)若要准确无误差的表示自然数,应使用整数类型B)若要保存带有多位小数的数据,应使用双精度类型C)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型D)若只处理“真”和“假”两种逻辑值,应使用逻辑类(17)若a是数值类型,则逻辑表达式(a==l)||(a!=l)的值是AA)1B)0C)2D)不知道a的值,不能确定(18)以下选项中与if(a==l)a=b;elsea++;语句功能不同的switch语句是BA)switch(a){case:a=b;break;default:a++;

2088)switch(a=l){case0:a=b;break;case1:a++;C)switch(a){default:a++;break;case1:a=b;)D)switch(a==l){case1:a=b;break;case0:a++;)(19)有如下嵌套的if语句if(aif(aelsek二c;

209elseif(belsek=c;以下选项中与上述if语句等价的语句是CA)k=(aA)k=(aB)k二(aC)k二(a(20)有以下程序ttincludemain(){ini,j,m=l;for(i=l;i<3;i++){for(j=3;j>0;j—){if(i*j)>3)break;m=i*j;

210printf(,,m=%d

211/,,m);)程序运行后的输出结果是AA)m=6B)m=2C)m=4D)m=5(21)有以下程序ttinclude(stdio.h>main(){inta=l;b=2;for(;a<8;a++){b+=a;a+=2;}printf(z,%d,%d

212”,a,b);程序运行后的输出结果是DA)9,18B)8,11

21307,11D)10,14(22)有以下程序,其中k的初值为八进制数ttincludemain(){intk=011;printf(〃%d

214〃,k++);)程序运行后的输出结果是DA)12B)llc)ioD)9(23)下列语句组中,正确的是AA)char*s;s=“Olympic”;B)chars[7];s=“Olympic”;

215C)char*s;s={"Olympic"};D)chars[7];s={"Olympic"};(24)以下关于return语句的叙述中正确的是BA)一个自定义函数中必须有一条return语句B)一个自定义函数中可以根据不同情况设置多条return语句0定义成void类型的函数中可以有带返回值的return语句D)没有return语句的自定义函数在执行结束时不能返回到调用处(25)下列选项中,能正确定义数组的语句是DA)intnum[O..2008];B)intnum[];OintN=2008;intnum[N];D)#defineN2008intnum[N];(26)有以下程序ttinclude

216voidfun(char*c,intd){*c=*c+l;d=d+l;printf(〃%c,%c,〃,*c,d);main(){charb='a,a=,A,;fun(&b,a)jprintf(,,%e,%e

217〃,b,a);程序运行后的输出结果是AA)b,B,b,AB)b,B,B,AC)a,B,B,aD)a,B,a,B(27)若有定义int(*Pt)[3];,则下列说法正确的是DA)定义了基类型为int的三个指针变量B)定义了基类型为int的具有三个元素的指针数组ptC)定义了一个名为*pt、具有三个元素的整型数组D)定义了一个名为pt的指针变量,它可以指向每行有三个

218整数元素的二维数组(28)设有定义doublea[10],*s=a;,以下能够代表数组元素a[3]的是BA)(*s)⑶B)*(s+3)C)*s[3]D)*s+3(29)有以下程序ttinclude(stdio.h)main()(inta[5]={l,2,3,4,5},b[5]={0,2,1,3,0},i,s=0;for(i=0;i<5;i++)s=s+a[b[i]]);printf(,,%d

219,,Js);程序运行后的输出结果是CA)6

220B)10OilD)15(30)有以下程序ttincludemain(){intb[3][3]={0,1,2,0,1,2,0,1,21,i,j,t=l;for(i=0;i<3;i++)for(j=ij<=l;j++)t+=b[i][b[j][i]];printf("%d

221〃,t);}程序运行后的输出结果是CA)1B)3C)4D)9

222(31)若有以下定义和语句charsi[10]=,,abcd!”,*s2=〃

223l23\\〃;printf(,,%d%d

224,,,strlen(sl),strlen(s2));则输出结果是AA)55B)105C)107D)58(32)有以下程序ttinclude#defineN8voidfun(int*x,inti){*x=*(x+i);}main(){inta[N]={l,2,3,4,5,6,7,8},i;fun(a,2);

225for(i=0;i{printfa[i]);}程序运行后的输出结果是cA)1313B)223403234D)1234(33)有以下程序ttincludeintf(intt[],intn);main{inta[4]={l,2,3,4),s;s=f(a,4);printf("%d

226〃,s);intf(intt[],intn){if(n>0)returnt[n-l]+f(t,n-l);

227elsereturn0;程序运行后的输出结果是BA)4B)10014D)6(34)有以下程序ttincludeintfun(){staticintx=l;x*2;returnx;main(){inti,s=l,for(i=l;i<=2;i++)s=fun();

228printf(〃%d

229〃,s);)程序运行后的输出结果是CA)0B)1C)4D)8(35)有以下程序ttinclude#defineSUB(a)(a)-(a)main(){inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf(〃%d

230〃,d);程序运行后的输出结果是c

231A)0B)-120-20D)10(36)设有定义:structcomplex{intreal,unreal;}datal={1,8},data2;则以下赋值语句中错误的是BA)data2=datal;B)data2=(2,6);C)data2.real=datal.real;D)data2.real=datal.unreal;(37)有以下程序ttincludettincludestructA{inta;charb[10];doublec;};

232voidf(structAt);main(){structAa={1001,,,ZhangDa,,>1098.0};f(a);printf(〃%d,%s,%6.a.a,a.b,a.c);}voidf(structAt){t.a=1002;strcpy(t.b,,,ChangRong,/);t.c=1202.0;}程序运行后的输出结果是AA)1001,zhangDa,1098.0A)1002,changRong,1202.0C)1001,ehangRong,1098.0D)1002,ZhangDa,1202.0(38)有以下定义和语句structworkers

233{intnum;charname[20];charc;struct{intday;intmonth;intyear;}s;};structworkersw,*pw;pw=&w;能给w中year成员赋1980的语句是DA)*pw.year=1980;B)w.year=1980;C)pw->year=1980;D)w.s.year=1980;(39)有以下程序ttincludemain(){inta=2,b=2,c=2;printf(,,%d

234,,,a/b&c);

2351程序运行后的输出结果是AA)0B)1C)2D)3(40)有以下程序ttincludemain(){FILE*fp;charstr[10];fp=fopen("myfile.dat",〃w〃);fputs(〃abc〃,fp);fclose(fp);fpfopen(^myfile.data”,〃a++”);fprintf(fp,"%d〃,28);rewind(fp);fscanf(fp,str);puts(str);

236fclose(fp);}程序运行后的输出结果是CA)abcB)28cC)abc28D)因类型不一致而出错二、填空题(1)一个队列的初始状态为空。现将元素A,B,C,D,E,F,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为【1】o(2)设某循环队列的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有【2】个元素。(3)设二叉树如下:

237对该二叉树进行后序遍历的结果为【3】o(4)软件是【4】、数据和文档的集合。(5)有一个学生选课的关系,其中学生的关系模式为:学生(学号,姓名,班级,年龄),课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:选课(学号,【5】,成绩)。(6)设x为int型变量,请写出一个关系表达式【6】,用以判断x同时为3和7的倍数时,关系表达式的值为真。(7)有以下程序ttincludemain(){inta=l,b=2,c=3,d=0;if(a==l)if(b!=2)

238if(c==3)d=l;elsed=2;elseif(c!=3)d=3;elsed=4;elsed=5;printf("%d

239",d);程序运行后的输出结果是[7】⑻有以下程序^includemain(){intm,n;scanf(〃%d%d”,&m,&n);while(m!=n){while(m>n)m=in-n;while(m

240)printf("%d

241",m);)程序运行后,当输入1463〈回车〉时,输出结果是[8]。(9)有以下程序#includemain(){inti,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)for(j=i;j<3;j++)printf(a%d%,a[i][j]);printf('

242");1程序运行后的输出结果是[9】o(10)有以下程序ttinclude

243main(){inta[]={l,2,3,4,5,6},*k[3],i=0;while(i<3){k[i]=&a[2*i]:printf("%d",*k[i]);i++;程序运行后的输出结果是[10]。(11)有以下程序ttincludemain(){inta[3][3]={{1,2,3},{4,5,6},{7,8,9)};intb[3]={0},i;for(i=0;i<3;i++)b[i]=a[i][2]+a[2][i];for(i=0;i<3;i++)printf('%d",b[i]);printf("

244");

245程序运行后的输出结果是[11]O(12)有以下程序ttincludettincludevoidfun(char*str){chartemp;intn,i;n=strlen(str);temp=str[n-1];for(i=n-l;i>0;i-)strEi]=str[i-l];str[0]=temp;}main(){chars[50];scanf(〃%s〃,s);fun(s);printf(〃%s

246〃,s);}程序运行后输入:abcdef<回车>,则输出结果是[12]o(13)以下程序的功能是:将值为三位正整数的变量x

247中的数值按照个位、十位、百位的顺序拆分并输出。请填空。ttincludemain(){intx=256;printf(,,%d-%d-%d

248,,>[13],x/10%10,x/100);(14)以下程序用以删除字符串所有的空格,请填空。ttincludemain(){chars[100]={"OurteacherteachClanguage!,/};inti,j;for(i=j=0;s[i]!=,\0';i++)if(s[i]!=''){s[j]=s[i];j++;}s[j]=[14]printf("%s

249",s);(15)以下程序的功能是:借助指针变量找出数组元素中的

250最大值及其元素的下标值。请填空。ttincludemain()

251{inta[10],*p,*s;for(p=a;p-a<10;p++)scanf(〃%d〃,p);for(p=a,s=a;p-a<10;p++)if(*p>*s)s=[15]printf("index=%d

252”,s~a);、3-0%V/(1)A<2)D(3)B(4)A(5)c(6)B(7)A(8)D(9)A(10)A(11)B(12)B(13)D(14)C(15)C(16)D(17)A(18)B(19)C(20)A(21)D\22)D《23》A(24)B(25)D(26)A(27)D(28)B(29)C(30)C(31)A(32)C(33)B(34)C(35)C(36)B<57'A(38)D(39)A4i:'C二、填空题(划分)A,B.C,D,E,M3.2,I<2)15(3)EDBGHFCA<4)程序(5)课号(6)(7)4(S)7(9)12356910)135(11)10141812)12fabcde(I3>X%100%10<14)(15)»♦!2010年9月全国计算机二级C++笔试试题:文字版一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。

253(1)下列叙述中正确的是AA)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对(2)下列叙述中正确的是CA)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对(3)软件测试的目的是DA)评估软件可靠性B)发现并改正程序中的错误

254C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是AA)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高(5)软件生命周期是指AA)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程(6)面向对象方法中,继承是指DA)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是D

255A)记录长度B)文件的大小C)联系的复杂程度D)数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是CA)一对一B)一对多C)多对多D)多对一(9)数据库设计中反映用户对数据要求的模式是CA)内模式B)概念模式C)外模式D)设计模式(10)有三个关系R、S和T如下:

256则由关系R和S得到关系T的操作是AA)自然连接B)交C)投影D)并(11)下列关于函数参数的叙述中,正确的是DA)在函数原型中不必声明形参类型B)函数的实参和形参共享内存空间C)函数形参的生存期与整个程序的运行期相向D)函数的形参在函数被调用时获得初始值(12)下列关于对象初始化的叙述中,正确的是CA)定义对象的时候不能对对象进行初始化B)定义对象之后可以显式地调用构造函数进行初始化C)定义对象时将自动调用构造函数进行初始化D)在一个类中必须显式地定义构造函数实现初始化(13)下列关于基类和派生类关系的叙述中,正确的是DA)每个类最多只能有一个直接基类

257B)派生类中的成员可以访问基类中的任何成员C)基类的构造函数必须在派生类的构造函数体中调用D)派生类除了继承基类的成员,还可以定义新的成员(14)下列关于赋值运算符“=”重载的叙述中,正确的是A)赋值运算符只能作为类的成员函数重载B)默认的赋值运算符实现了“深层复制”功能C)重载的赋值运算符函数有两个本类对象作为形参D)如果己经定义了复制(拷贝)构造函数,就不能重载赋值运算符(15)下列关于模板的叙述中,正确的是CA)如果一个类中存在纯虚函数,这个类就是类模板B)函数模板不能有形式参数表C)类模板是一种参数化类型的类,是类的生成器D)类模板中不能包含构造函数(16)下列关于C++预定义流对象的叙述中,正确的是A)cin是C++预定义的标准输入流对象

258B)cin是C++预定义的标准输入流类C)cout是C++预定义的标准输入流对象D)cout是C++预定义的标准输入流类(17)下列选项中,正确的C++标识符是DA)6_groupB)group〜6C)age+3D)_group_6(18)下列选项中,正确的C++表达式是CA)counter++3B)element3+C)a+=bD)(a=b(19)下列循环语句中有语法错误的是DA)inti;for(i=1;i<10;i++)cout«***;B)inti,j;for(i=1,j=0;i<10;i++,j++)coutvv'*';C)inti=0;for(;i<10;i++)coutvv'*';D)for(1)coutvv'*';(20)下列定义语句中,错误的是A

259A)intpx*;B)char*acp[10];C)char(*pac)[10];D)int(*p)();函数指针(21)下列函数原型声明中,错误的是CA)intfriction(intm,intn);B)intfunction(int,int);C)intfunction(intm=3,intn);函数只能有形参类型D)intfunction(int&m,int&n);(22)若MyClass为一个类,执行“MyClassa[4],*p[5];"语句时会自动调用该类构造函数的次数是CA)2B)5C)4D)9(23)若在表达式y/x中,“/”是作为成员函数重载的运算符,则该表达式还可以表示为CA)/.Operator/(Y)B)operator/(x,Y)C)Y.operator/(x)D)operator/(y,x)

260(24)若要重载+、=、«>=和□运算符,则必须作为类成员重载的运算符是DA)+和=B)=和《C)==和<T1sum(T2,T3);doubledl,d2;A则下列调用中,错误的是A)sum(dl,d2);B)sum(d1,d2);C)sum(d1,d2);D)sum(d1,d2);(26)有如下语句序列:charstr[1O];cin»str;当从键盘输入"llovethisgame”时,str中的字符串是DA)"Ilovethisgame"B)"Ilovethi"

261C)"Ilove"D)"I"(27)有如下程序:#include#includeusingstd::cout;classPoint{public:frienddoubledistance(constPoint&p);//p距原点的距离Point(intxx=0,intyy=O):x(xx),Y(YY){}〃①private:Intx,Y;);doubledistance(constPoint&p){〃②returnsqrt(p.x*p.x+p.Y*p.Y);}intmain(){Pointp1(3,4);cout«distance(p1);〃③

262return0;

263下列叙述中正确的是AA)程序编译正确B)程序编译时语句①出错C)程序编译时语句②出错D)程序编译时语句③出错(28)有如下程序:#includeusingnamespacestd;classCD(public:〜CD(){coutvv'C';)private:charname[80];};intmain(){CDa,*b,d[2];return0;)运行时的输出结果是A)CCCCB)CCCC)CCD)C(29)某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是CA)constvoidShow();

264A)voidconstShow();B)voidShow()const;C)voidShow(const);(30)若已定义了类Vehicle,则下列派生类定义中,错误的是BA)classCar:Vehicle{/*类体略*/},B)classCar:publicCar{/*类体略*/};C)classCar:publicVehicle{/*类体略*/};D)classCar:virtualpublicVehicle{/*类体略*/};(31)有如下程序:#includeusingnamespacestd;classMusic(public:voidsetTitle(char*str){strcpy(title,str);}protected:chartype[10];private:chartitle[20];};

265classJazz:publicMusic{public:voidset(char*str){strcpy(type,"Jazz");strcpy(title,str);});下列叙述中正确的是A)程序编译正确一①出错C)程序编译时语句②出错语句①和②都出错(32)有如下程序:#includeusingnamespacestd;classInstrument{public:virtualvoidDisplay()=0;〃①〃②B)程序编译时语句D)程序编译时classPiano:publicInstrument{public:voidDisplay(){/文函数体程序略*/}

266int,main(){Instruments;Instrument*p=0;//...;return0;}下列叙述中正确的是A)语句"Insturment*p=0;”编译时出错B)语句"Instruments;"编译时出错C)类Piano中的Display函数不是虚函数D)类Instrumen七是一个虚基类(33)有类定义如下:气classType{public:Type(inti=0);Tvpeoperator-(int);friendTypeoperator+(Type,Type);private:intval;若有对象定义Typecl;则下列语句序列中,错误的是

267A)Type(3)+c1;B)cl+Type(3);C)3-cl;D)d-3;(34)有如下程序:#include#includeusingnamespacestd;—intmain(){Cout«setw(10)«setfillCx')«setprecision(8)«left;Cout«12.3456793«<<98765;return0;)若程厚的输出是12.345679x98765xxxxx,则划线处缺失的部分是A)setw(10)B)setfill('x')C)setprecision(8)D)right(35)有如下程序:#includeusingnamespacestd;classBook{public:

268Book(char*t=""){strcpy(titie,t);private:Chartitle[40];);classNovel:publicBook{public:Novel(char*t=""):BOOK(t){)char*Category()const{return""文学"});intmain(){Book*pb;pb=newNovel();Cout«pb->Category();return0;)若程序运行时输出结果是“文学”,则划线处缺失的语句是A)char*Category();B)char*Category()const;C)virtualchar*Category()const;

269A)virtualchar*Category()const=0;

270二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】-【15]序号的横线上,答在试卷上不得分。注意:以命令关键字填空的必须拼写完整。(1)一个栈的初始状态为空。首先将元素5,4,3,2,1依次入栈,然后退栈一次,再将元素A,B,C,D依次入栈,之后将所有元素全部退栈,则所有元素退栈(包括中间退栈的元素)的顺序为【1】(2)在长度为n的线性表中,寻找最大项至少需要比较【2】次。(3)一棵二叉树有10个度为1的结点,7个度为2的结点,则该二叉树共有—[31—个结点。(4)仅由顺序、选择(分支)和重复(循环)结构构成的程序是—【4】—程序。(5)数据库设计的四个阶段是:需求分析,概念设计,

271逻辑设计和—【5】_。(6)如果一个派生类只有一个直接基类,则该类的继承方式称为—【6】_继承;如果一个派生类同时有多个直接基类,则该类的继承方式称为—【7】_继承。(7)运算符“'允许重载为类成员函数,或者非成员函数。若用operator+(c1,c2)这样的表达式来使用运算符应将“+”重载为_【8】_函数。(8)下列程序的输出是3,请填充程序中的空缺,使该行形成一个运算符重载函数的定义。#includeusingnamespacestd;classMyNumber{intn;public:MyNumber(intk):n(k){}_[91Jnt()const(returnn,}};intmain(){MyNumbernuml(3);

272Cout«int(numl);return0;)(9)下列程序的输出结果是—【10】_o#includeusingnamespacestd;classBase{public:intm,n;Base(inti,intj):m(i),n(j){});classDerived:publicBase{public:intm,k;Derived(inti,intj):Base(i,j),m(i+1),k(j+1)()};intmain(){Derivedd(1;5);Cout«d.M«d.K«d.n;

273return0;

274(10)根据程序中的注释将下列缺失部分补充完整。classA{char*a;public:A():a(0){)A(char*aa){//把aa所指字符串复制给a所指向的存储空间a=—[11]—char[strlen(aa)+1];strcpy(a,aa);)〜A()(delete[]a;}};(11)根据程序中的注释将下列缺失部分补充完整。classPoint{intx,y;〃点的x和y坐标public:Point(intxx=0,intyy=o):x(xx),y(yy)());classCircle{Pointcenter;〃圆心位置intradius;〃半径

275public:〃利用ex和cy分别初始化圆心的x和y坐标Circle(intex;intcy,intr):_[12]_,radius(r){}voidarea(){cout«3.14159*radius*radius«endl;));(12)一网喂序的输出结果是—[13]_0#includeusingnamespacestd;classBase{Intx;Public:Base(intb):x(b){}virtualvoiddisplay(){cout«x;}};classDerived:publicBase{Inty;public:Derived(intd):Base(d),y(d)(}voiddisplay(){cout«y;}};intmain(){

276Baseb(1);Derivedd(2);Base*p=&d;b.display();d.display();p->display();return0;)(12)一个双目运算符作为类的成员函数重载时,重载函数的参数表中有—[14]一个参数。(14)派生类中的成员函数可以直接访问基类中的公有成员和—【15】—成员。答案:一,选择题IB2C3D4A5A6D7D8C9C10AIID12C13D14A15C16A17D18C19D20A21C22C23C24D25A26D27A28B29C30B31C32A33D34A35D二,填空题(1)IDCBA2345⑵1

277⑶25(4)结构化(5)物理设计(6)单,多⑺非成员(8)operator(9)265(10)new(11)center(ex,ey)(12)122(13)1(14)保护

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭