12008年9月计算机二级考试C++笔试及答案一、单选题1.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是A)12345ABCDEB)EDCBA54321C)ABCDE12345D)54321EDCBA2.下列叙述中正确的是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)控制流B)事件驱动C)模块调用D)数据流6.在软件开发中,需求分析阶段可以使用的同居是A)N-S图B)DFD图C)PAD图D)程序流程图7.在面向对象方法中,不属于“对象”基本特点的是A)一致性B)分类性C)多态性D)标识唯一性8.一间宿舍可以住多个学生,则实体宿舍和学生之间的联系是A)一对一B)一对多C)多对一D)多对多9.在数据管理技术发展的三个阶段中,数据共享最好的是A)人工管理阶段B)文件系统阶段C)数据库系统阶段D)三个阶段相同10.有三个关系R、S、和T如下:由关系R和S通过运算得到关系T,则所使用的运算为A)笛卡尔积B)交C)并D)自然连接11.在下列原型所示的C++函数中,按“传值”方式传递参数的是A)voidf1(intx);B)voidf2(int*x);C)voidf3(constint*x);D)voidf4(int&x);12.在C++中,编译系统自动为一个类生成缺省构造函数的条件是A)该类没有定义任何有参构造函数B)该类没有定义任何无参构造函数C)该类没有定义任何构造函数D)该类没有定义任何成员函数13.在一个派生类的成员函数中,试图调用其基类的成员函数“voidf();”,但无法通过编译,这说明2A)f()是基类的私有成员B)f()是基类的保护成员C)派生类的继承方式为私有D)派生类的继承方式为保护14.下列关于运算符重载的叙述中,错误的是A)有的运算符可以作为非成员函数重载B)所有的运算符都可以通过重载而被赋予新的含义C)不得为重载的运算符函数的参数设置默认值D)有的运算符只能作为成员函数重载15.下列关于模板的叙述中,错误的是A)调用模板函数是,在一定条件下可以省略模板实参B)可以用int,double这样的类型修饰符来生命模板参数C)模板声明中的关键字class都可以用关键字typename代替D)模板的形参表中可以有多个参数16.要利用c++流进行文件操作,必须在程序中包含的头文件是A)iostreamB)istreamC)strstreamD)iomanip17.下列字符串中不能作为c++标识符使用的是A)WHILEB)userC)_lvarD)9stars18.下列语句中错误的是A)constinta;B)constinta=10;C)constint*point=0;D)constint*point=newint(10);19.有如下程序#includeiostreamusingnamespacestd;intmain(){intsum;for(inti=0;i6;i+=3){sum=i;for(intj=i;j6;j++)sum+=j;}coutsumendl;return0;}运行时的输出结果是A)3B)10C)12D)1520.下列语句中,正确的是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)voidfun(inta,doubleB);C)voidfun(doublea,intB);D)boolfun(inta,doubleb=0.0);22.有如下程序#includeiostream3usingnamespacestd;classSample{public:Sample(){}~Sample(){cout*;}};intmain(){Sampletemp[2],*pTemp[2];return0;}执行这个程序输出星号(*)的个数为A)1B)2C)3D)423.下列选项中,与实现运行时多态性无关的是A)重载函数B)虚函数C)指针D)引用24.下列运算符函数中,肯定不属于类Value的成员函数的是A)Valueoperator+(Value);B)Valueoperator-(Value,Value);C)Valueoperator*(int);D)Valueoperator/(Value);25.下列模板生命中,有语法错误的是A)templatetypenameTfun(Tx){returnx;}B)templatetypenameTfun(Tx,intn){returnx*n;}C)templatetypenameTfun(T*p){return*p;}D)templatetypenameTclassA{Tn;};26.在语句“cout'A';”中,cout是A)类名B)对象名C)函数名D)C++中的关键字27.有如下程序:#includeiostreamusingnamespacestd;classMyClass{public:MYClass(inti=0){couti;}MyClass(constMyClass&x){cout2;}MyClass&operator=(constMyClass&x){cout3;return*this;}~MyClass(){cout4;}};intmain(){MyClassobj1(1),obj2(2),obj3(obj1);return0;}运行时的输出结果是A)112444B)11114444C)121444D)1121444428.有如下程序:#includeiostreamusingnamespacestd;classMYClass{4public:MYClass(intx):val(x){}voidSet(intx){val=x;}voidPrint()const{coutval=val'\t';}private:intval;};intmain(){constMyClassobj1(10);MyClassobj2(20);obj1.Print();//语句1obj2.Print();//语句2obj1.Set(20);//语句3obj2.Set(30);//语句4return0;}其主函数中错误的语句是A)语句1B)语句2C)语句3D)语句429.在类生命中,紧跟在“public:”后生命的成员的访问权限是A)私有B)公有C)保护D)默认30.对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是A)公有或私有B)私有C)保护或私有D)公有或保护31.定义派生类是,若不使用关键字显示地规定采用何种继承方式,则默认方式为A)私有继承B)非私有继承C)保护继承D)公有继承32.建立一个有成员对象的派生类对象是,各构造函数体的执行次序为A)派生类、成员对象类、基类B)成员对象类、基类、派生类C)基类、成员对象类、派生类D)基类、派生类、成员对象类33.如果表达式a=b中的=是作为非成员函数重载的运算符,则可以等效地表示为A)a.operator=(b)B)b.operator=(a)C)operator=(a,b)D)operator=(b,a)34.当使用ofstream流类定义一个流对象并打开一个磁盘文件是,文件的默认打开方式为A)ios_base::inB)ios_base::binaryC)ios_base::in|ios_base:outD)ios_base::out35.在一个抽象类中,一定包含有A)虚函数B)纯虚函数C)模板函数D)重载函数二、填空题(每空2分,共计30分)1.对下列二叉树进行中序遍历的结果是。52.按照软件测试的一般步骤,继承测试应在测试之后进行。3.软件工程三要素包括方法、工具和过程,其中,支持软件开发的各个环节的控制和管理。4.数据库设计包括概念设计、和物理设计。5.在二维表中,元组的不能再分成更小的数据项。6.当使用关键字作为函数返回类型是,该函数不返回任何值。7.已知数组a中有n个元素,下列语句将数组a从下标x1开始的k个元素移动到从下标x2开始的k个元素中,其中0=x1x2n,x2+kn,请将下列语句补充完整。for(inti=x1+k-1;i=x1;i--)a[]=a[i];8.有如下程序:#includeiostreamusingnamespacestd;intfun1(intx){return++x;}intfun2(int&x){return++x;}intmain(){intx=1,y=2;y=fun1(fun2(x));countx','y;return0;}程序的输出结果是。9.有如下程序:#includeiostreamusingnamespacestd;classpumpkin{public:pumpkin(){++count;}~pumpkin(){--count;}staticvoidtotal_count(){coutcountpumpkin(s)endl;}private:staticintcount;};intmain(){6pumpkinp1[10];pumpkin:total_count();return0;}这个程序输出的结果是。10.有如下递归函数:intFun(intn){if(n=1)return1;}请补充完整,使得函数Fun能够正确计算形参n的阶乘11.请在下列程序的空格出填写正确的语句:classSample{public:Sample(){}~Sample(){}voidSetData(intdata){//将Sample类成员变量data设置成形参的值}private:intdata;};12.有如下类定义,请将Sample类的拷贝构造函数补充完整。classSample{public:Sample(){}~Sample(){if(p)deletep;}Sample(constSample&s){}voidSetData(intdata){p=newint(data);}private:int*p;};13.重载加法运算符“+”,其函数名是。14.有如下程序:#includeiostreamusingnamespacestd;classWages{//“工资”类doublebase;//基本工资doublebonus;//奖金doubletax;//税金public:Wages(doubleCBase,doubleCBonus,doubleCTax):7base(CBase),bonus(CBonus),tax(CTax){}doublegetPay()const;//返回应付工资额Wagesoperator+(Wagesw)const;