历年计算机二级C++笔试试题及答案_第1页
历年计算机二级C++笔试试题及答案_第2页
历年计算机二级C++笔试试题及答案_第3页
历年计算机二级C++笔试试题及答案_第4页
历年计算机二级C++笔试试题及答案_第5页
已阅读5页,还剩241页未读 继续免费阅读

下载本文档

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

文档简介

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)栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素(4)下列叙述中正确的是A)一个逻辑数据结构只能有一种存储结构B)数据的逻辑结构属于线性结构,存储结构属于非线性结构一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率(5)下列描述中正确的是A)软件工程只是解决软件项目的管理问题B)软件工程主要解决软件产品的生产率问题C)软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D)软件工程只是解决软件开发中的技术问题(6)在软件设计中,不属于过程设计工具的是PDL(过程设计语言)PAD图N-S图DFD图(7)下列叙述中正确的是A)软件交付使用后还需要进行维护B)软件一旦交付使用就不需要再进行维护C)软件交付使用后其生命周期就结束D)软件维护是指修复程序中被破坏的指令(8)数据库设计的根本目标是要解决A)数据共享问题B)数据安全问题C)大量数据存储问题D)简化数据维护(9)设有如下关系表:则下列操作中正确的是A)T=RCSB)T=RUSC)T=RxSD)T=R/S(10)数据库系统的核心是A)数据模型B)数据库管理系统C)数据库D)数据库管理员(11)下列关于C++函数的叙述中,正确的是A)每个函数至少要具有一个参数B)每个函数都必须返回一个值C)函数在被调用之前必须先声明D)函数不能自己调用自己(12)下列关于类和对象的叙述中,错误的是A)一个类只能有一个对象B)对象是类的具体实例C)类是对某一类对象的抽象D)类和对象的关系是一种数据类型与变量的关系(13)在C++中,用于实现运行时多态性的是A)内联函数B)重载函数C)模板函数D)虚函数(14)下列关于运算符重载的叙述中,正确的是A)通过运算符重载,可以定义新的运算符B)有的运算符只能作为成员函数重载C)若重载运算符+,则相应的运算符函数名是+D)重载一个二元运算符时,必须声明两个形参(15)下列关于模板的叙述中,错误的是A)模板声明中的第一个符号总是关键字templateB)在模板声明中用<和>括起来的部分是模板的形参后C)类模板不能有数据成员D)在一定条件下函数模板的实参可以省略(16)对于语句cout«“cout”是一个输出流对象“endl”的作用是输出回车换行“x”是一个变量“<<”称作提取运算符(17)下列字符串中,正确的C++标识符是fbo-12bnew256(18)已知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};则下列叙述中错误的是A)枚举常量NAME的值为1B)枚举常量NUMBER的值为1C)枚举常量MINUS的值为6D)枚举常量PRINT的值为10(19)执行语句序列inti=0;while(ix25)i+=3;cout<输出结果是24252728(20)要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中错误的是intvect[]={30,50,-88};intvect[]={30,50,-88,0,0};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]);std::cout«a[0]«","«a[l]«std::endl;return0;)执行后的输出结果是42,4223,2323,4242,23(22)有如下类声明:classFoo{intbar;};则Foo类的成员bar是A)公有数据成员B)公有成员函数C)私有数据成员D)私有成员函数(23)有如下类声明:classMyBASE{intk;public:voidset(intn){k=n;}intget()const{returnk;}};classMyDERIVED:protectedMyBASE{protected:intj;public:voidset(intm,intn){MyBASE::set(m);j=n;}intget()const{returnMyBASE::get()+j;)};则类MyDERIVED中保护的数据成员和成员函数的个数是4321(24)已知在一个类体中包含如下函数原型:VOLUMEoperator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是A)这是运算符-的重载运算符函数B)这个函数所重载的运算符是一个一元运算符C)这是一个成员函数D)这个函数不改变类的任何数据成员的值(25)有如下函数模板定义:templateTfunc(Tx,Ty){returnx*x+y*y;}在下列对func的调用中,错误的是func(3,5);func(3.0,5.5);func(3,5.5);fiinc(3,5.5);(26)有如下程序:#includeusingnamespacestd;intmain(){cout.fill('*');cout.width(6);cout.fillf#');cout«123«endl;return0;}执行后的输出结果是###123123###***123123***(27)在下列函数原型中,可以作为类AA构造函数的是voidAA(int);intAA();AA(int)const;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()(Test*p=newTest;deletep;cout«"n="«Test::getNum()«endl;return0;}执行后的输出结果是n=0n=ln=2n=3(30)有如下程序:#includeusingnamespacestd;classA{public:A(){cout«"A',;}};classB{public:B(){cout«"B'*;}};classC:publicA{Bb;public:C(){cout«"C";}};intmain(){Cobj;return0;}执行后的输出结果是CBABACACBABC(31)有如下类声明:classXA{intx;public:XA(intn){x=n;});classXB:publicXA{inty;public:XB(inta,intb););在构造函数XB的下列定义中,正确的是XB::XB(inta,intb):x(a),y(b){}XB::XB(inta,intb):XA(a),y(b){}XB::XB(inta,intb):x(a),XB(b){}D)XB::XB(inta,intb):XA(a),XB(b){}(32)有如下程序:#includeusingnamespacestd;classBASE{public:〜BASE(){cout«"BASE";}};classDERIVED:publicBASE{public:〜DERIVED(){cout«"DERIVED";});intmain(){DERIVEDx;return0;}执行后的输出结果是BASEDERIVEDBASEDERIVEDDERIVEDBASE(33)在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的operator+有两个参数,operator*有两个参数operator+有两个参数,operator*有一个参数operator+W一个参数,operator*有两个参数operator+有一个参数,operator*有一个参数(34)下面关于C++流的叙述中,正确的是A)cin是一个输入流对象B)可以用ifstream定义一个输出流对象C)执行语句序列char*y="PQMN";cout<D)执行语句序列charx[80];cin.getline(x,80);时,若键Happynewyear则x中的字符串是“Happy”(35)有如下程序:#includeusingnamespacestd;classAA{intn;public:AA(intk):n(k){}intget(){returnn;}intget()const{returnn+1;}intmain()(AAa(5);constAAb(6);cout«return0;}执行后的输出结果是55577577二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡[1】〜【15】序号的横线上,答在试卷上不得分。(1)数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是【1】0(2)算法复杂度主要包括时间复杂度和【2】复杂度。(3)在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中【3】的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。一棵二叉树第六层(根结点为第一层)的结点数最多为【4】个。(5)数据结构分为逻辑结构和存储结构,循环队列属于【5】结构。(6)下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回false。请在横线处填上适当内容,实现该函数。boolfun(char*str)(inti=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++;}〜Point(){countP—;}intGetX(){returnX;}intGetY(){returnY;}staticvoidGetC(){cout«"Objectid="«<ENDL;}&NBSP;private:intX,Y;staticintcountP;};[9] 〃静态数据成员的初始化intmain()Point::GetC();PointA(4,5);A.GetC();return0;)(9)非成员函数应声明为类的 [10]函数才能访问这个类的private成员。(10)派生类中的成员不能直接访问基类中的1111成员。(11)下列程序的输出结果为2,请将程序补充完整。#includeusingnamespacestd;classBase(public:voidfun(){cout«l;}};classDerived:publicBase(public:voidfun(){cout«2;}};intmain()(Base*p=newDerived;p->fun();deletep;return0;}(12)请将下列类定义补充完整。classBase{public:voidfun(){cout«"Base::fun"<classDerived:publicBase{public:voidfiin(){〃显式调用基类的fun函数cout«"Derived二fbn"<<ENDL;});(13)多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但[]运算符只能作为类的[14]函数重载。(14)下面是一个栈类的模板,其中push函数将元素i压入栈顶,pop函数弹出栈顶元素。栈初始为空,top值为0,栈顶元素在stack[top-l]中,在下面横线处填上适当语句,完成栈类模板的定义。templateclassTstackenum{size=1000};Tstack[size];inttop;public:Tstack():top(0){}voidpush(constT&i){if(top<SIZE)stack[top++]=i;)Tpop(){if(top=0)exit(l); 〃栈空时终止运行return[15];)};2005年9月全国计算机等级考试二级C++笔试试题答案选择题:03.D06.D09.B01.C04.D07.A10.B02.A05.C08.A11.C

12.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)两个或两个以上模块之间关联的紧密程度称为A.耦合度B.内聚度C.复杂度D.数据传输特性(3)下列叙述中正确的是A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对(4)按照“后进先出”原则组织数据的数据结构是A.队列B.栈C.双向链表D.二叉树(5)下列叙述中正确的是A.线性链表是线性表的链式存储结构B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性结构(6)对如下二叉树,进行后序遍历的结果为ABCDEFDBEAFCABDECFDEBFCA(7)在深度为7的满二叉树中,叶子结点的个数为32316463(8)“商品”与“顾客”两个实体集之间的联系一般是一对一一■对多C.多对一D.多对多(9)在E-R图中,用来表示实体的图形是A.矩形B.椭圆形C.菱形D.三角形(10)数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是DB包含DBS和DBMSDBMS包含DB和DBSDBS包含DB和DBMSD.没有任何关系(11)下列关于C++函数的说明中,正确的是<br>A.内联函数就是定义在另一个函数体内部的函数<br>B.函数体的最后一条语句必须是return语句<br>C.标准C++要求在调用一个函数之前,必须先声明其原型<br>D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式<br>(12)由于常对象不能被更新,因此<br>A.通过常对象只能调用它的常成员函数<br>B.通过常对象只能调用静态成员函数<br>C.常对象的成员都是常成员<br>D.通过常对象可以调用任何不改变对象值的成员函数<br>(13)下列关于虚函数的说明中,正确的是<br>A.从虚基类继承的函数都是虚函数<br>B.虚函数不得是静态成员函数<br>C.只能通过指针或引用调用虚函数<br>D.抽象类中的成员函数都是虚函数vbr>(14)运算符重载是对已有的运算符赋予多重含义,因此<br>A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义<br>B.可以改变一个已有运算符的优先级和操作数个数<br>C.只能重载C++中已经有的运算符,不能定义新运算符<br>D.C++中已经有的所有运算符都可以重载<br>(15)模板对类型的参数化提供了很好的支持,因此<br>A.类模板的主要作用是生成抽象类<br>B.类模板实例化时,编译器将根据给出的模板实参生成一个类vbr>C.在类模板中的数据成员都具有同样类型<br>D.类模板中的成员函数都没有返回值<br>(16)下列关于C++流的说明中,正确的是<br>A.与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现<br>B.从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作<br>C.cin是一个预定义的输入流类vbr>D.输出流有一个名为open的成员函数,其作用是生成一个新的流对象<br>(17)下列符号中可以用作C++标识符的是vbr>radius<br>foo-bar<br>else<br>3room<br>(18)下列语句中,错误的是<br>constintbuffer=256;<br>constinttemp;<br>constdouble*point;<br>constdouble*rt=newdouble(5.5);<br>(19)有如下程序:<br>intx=3;<br>do{<br>x-=2;<br>cout<<br>}while(!(--x));<br>执行这个程序的输出结果是<br>1<br>30<br>1-2<br>D.死循环<br>(20)有如下程序:vbr>#include〈br>usingnamespacestd;<br>intmain()<br>{<br>int*p;<br>*p =9;<br>cout<<"Thevalueatp:"<<*p;<br>retum0;vbr>}vbr>编译运行程序将出现的情况是vbr>A.够编译时出现语法错误,不能生成可执行文件<br>B.运行时一定输出:Thevalueatp:9<br>C.运行时一定输出:Thevalueatp:*9<br>D.运行时有可能出错<br>(21)有如下程序:#includeusingnamespacestd;intmain(){voidfunction(doubleval);doubleval;function(val);cout<return0;}voidfunction(doubleval)(val=3;)编译运行这个程序将出现的情况是A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数(22)有如下类定义:classAAinta;public:intgetReR)const{return&a;}〃①intgetvalue()const{returna;}〃②voidset(intn)const{a=n;}〃③friendvoidshow(AAaa)const{cout<〃④};其中的四个函数定义中正确的是A.①B.②C.③D.④(23)有如下程序:#include+usingnamespacestd;#includeusingnamespacestd;classBase(public:voidfiin(){cout«"Base::fun"<);classDerived:publicBasepublic:voidfiin()(cout«"Derived::fun"<}};intmain(){Derivedd;d.fun();return0;)已知其执行后的输出结果为:Base::funDerived::fun则程序中下划线处应填入的语句是Base.fun();Base::fun()Base->fun()fun();(24)下面是重载为非成员函数的运算符函数原型,其中错误的是Fractionoperator+(Fraction,Fraction);Fractionoperator-(Fraction);Fraction&operator=(Fraction&,Fraction);Fraction&operator+=(Fraction&,Fraction);(25)有如下函数模板:templateTcast(Uu){returnu;}其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是cast(i);cast<>(i);cast(i);cast(i);(26)若磁盘上已存在某个文本文件,其全路径文件名为d:\ncre\test.txt,下列语句中不能打开该文件的是ifstreamfile("d:\ncre\test.txt");ifstreamfile("d:\ncre\test.txt");ifstreamfile;file.open("d:\ncre\test.txt");ifstream*pFile=newifstream("d:\ncre\test.txt");(27)有如下类定义:classFoopublic:Foo(intv):value(v){}〃①-Foo(){}〃②private:Foo(){}〃③intvalue=0;II@};其中存在语法错误的行是A.①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类的构造函数被调用的次数是2次3次4次5次(29)有如下类定义:classTest{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;}};intmain()Bobj;return0;执行这个程序的输出结果是A.BAA~A~B〜AABA〜B〜A〜ABAA〜B〜A〜AABA〜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(){Derivedobj;obj.funl();//①obj.fUn2();〃②obj.fun3();//③obj.fun4();II®return0;)其中有语法错误的语句是A.①②③④B.①②③C.②③④D.①④(32)有如下程序:#includeusingnamespacestd;classBasepublic:voidfunl(){cout«"Base\n'^;}virtualvoidfun2(){cout«"Base\n";}};classDerived:publicBase{public:voidfunl(){cout«"Derived\n";}voidfun2(){cout«"Derived\n";}};void戈Base&B.{b.funl();b.fun2();}&,It;,/P>intmain()(Derivedobj;f(obj);return0;)执行这个程序的输出结果是BaseBaseDerivedDerivedBaseDerivedBaseDerived(33)有如下程序:#includeusingnamespacestd;classComplex{doublere,im;public:Complex(doubler,doublei):re(r),im(i){}doublereal()const{returnre;}doubleimage()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)<return0;执行这个程序的输出结果是(1,-2)(2,3)(3,5)(3,1)(34)有如下程序:#include#includeusingnamespacestd;intmain()(cout.fill(,**);cout<return0;执行这个程序的输出结果是123*OK123*OK***123OK*123**OK(35)有如下类声明:classSAMPLE(intn;public:SAMPLE(inti=0):n(i){}voidsetvalue(intnO);};下列关于setvalue成员函数的实现中,正确的是SAMPLE::setvalue(intn0){n=nO;}voidSAMPLE::setvalue(intn0){n=nO;}voidsetvalue(intn0){n=n0;}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(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,double(cout<)(9)有如下类声明:classMyClass(inti;private:intj;protected:intk;public:intm,n;);其中,私有成员的数量为【9】(10)有如下程序:#includeusingnamespacestd;classCon{charID;public:Con():ID('A'){cout«l;}Con(charI:ID(ID.{cout«2;}Con(Con&C.:ID(c.getID()){cout«3;}chargetID()const{returnID;});voidshow(ConC.{cout<intmain()Concl;show(c1);Conc2('B');show(c2);return0;执行上面程序的输出是[10](11)有如下程序:#includeusingnamespacestd;classONE{public:virtualvoidf(){cout«"l";}};classTWO:publicONE(public:TWO(){cout«"2";}};classTHREE:publicTWOpublic:virtualvoidf(){TWO::f();cout«"3";}};intmain()(ONEaa,*p;TWObb;THREEcc;p=&cc;p->f();return0;}执行上面程序的输出是[11](12)有如下程序:#includeusingnamespacestd;classPARENT(public:PARENT(){cout«"PARENT";}};classSON:publicPARENTpublic:SON(){cout«"SON";}};intmain(){SONson;PARENT*p;p=&son;return0;)执行上面程序的输出是[12]o(13)若以非成员函数形式,为类Bounce重载“!”运算符,其操作结果为一bool型数据,则该运算符重载函数的原型是[13]o(14)下面是复数类complex的定义,其中重载的运算符“+”的功能是返回一个新的复数对象,其实部等于两个操作对象实部之和,其虚部等于两个操作对象虚部之和;请补充完整:classcomplex{doublereal;〃实部doubleimag;//虚部public:complex(doubler,doublei):real(r),imag(i){}

complexoperator+(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)(1)D)(6)D)(7)C)(8)D)(9)A)(10)C)(11)C)(16)A)(21)(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)静态分析(5)物理独立性breakint*p=DATA=3.5213A23B2213PARENTSONbooloperator!(Bounce);(Bounce后可以跟一个变量名)[14]real+a.real,imag+a.imag[15]FUN<double>(7)或FUN<double,int>(7)九月(1)下列选项中不符合良好程序设计风格的是oA)、源程序要文档化B)、数据说明的次序要规范化C)、避免滥用got。语句D)、模块设计要保证高耦合,高内聚(2)从工程管理角度,软件设计一般分为两步完成,它们是 0A)、概要设计与详细设计B)、数据设计与接口设计C)、软件结构设计与数据设计D)、过程设计与数据设计(3)下列选项中不属于软件生命周期开发阶段任务的是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)数据库技术的根本目标是要解决数据的。A)、存储问题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)、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类(14)下列运算不能重载为友元函数的是oA)、=() 、■!•—H—C)、><>=<=D)、+=-=*=/=(15)关于在调用模板函数时模板实参的使用,下列表述正确的是0A)、对于虚类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B)、对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,FCEADBG则都可以省略C)、对于虚拟型参数所对应的模板实参,若能够省略则必须省略D)、对于常规参数所对应的模板实参,任何情况下都不能省略2006年9月二级C++考试试卷第4页(共5页)(16)下列关于输入流类成员函数getline。的描述中,错误的是。A)、该函数是用来读取键盘输入的字符串的B)、该函数读取的字符串长度是受限制的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(-)(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++中原来没有的运算符(25)关于关键字class和typename,下列表述中正确的是A)、程序中的typename都可以替换为classB)、程序中的class都可以替换为typenameC)、在模板形参表中只能用typename来声明参数的类型D)、在模板形参表中只能用class或typename来声明参数的类型(26)有如下程序incIude<inostream>incIude<iomanip>usingnamespacestd;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)(27)有如下程序incIude<iostream>#include<iomanip>usingnamespacestd;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)有如下程序#incIude<iostream>usingnamespacestd;inti=1;cIassFun{pubIic;staticinti;intvaIue(){returni_1}intvaIue()const{returni+1;));intFun;;i=2;intmain(){inti=3;FunFunlconstFunfun2;returnO;若程序的输出结果是: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;D)、cout«fun20vaIue()«fun::i«fun10vaIue();(29)有如下程序#incIude<iostream>usingnamespacestd;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(30)有如下程序2006年9月二级C++考试试卷第9页(共5页)#incIude<iostream>usingnamespacestd;cIassBase{protected;Base(){cout«,A';}Base(chare){cout«c;});cIassDerived;pubIicBase{pubIic:Derived(chare){cout«c;)};intmain(){Deriveddl(<B,);returnO;)执行这个程序屏幕上将显示输出OA)、BB)、BAO、ABD)、BB(31)有如下类定义:cIassMyBase{intk;pubIic;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)、先调用基类的析构函数后调用派生类的析构函数C)、如果基数没有定义析构函数,则只调用派生类的析构函数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)、若文件存在,将文件指针定位于文件首;若文件不存在,打开失败D)、若文件存在,打开失败;若文件不存在,建立一个新文件(35)有如下程序#incIude<iostream>usingnamespacestd;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();retumO;)运行程序,屏幕上将显示输出OA)、B1B2B)、A1A2C)、B1A2D)、A1B2二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡[1]〜[15]序号的横线上,答在试卷上不得分。(1)下列软件系统结构图的宽度为[2]的任务是诊断和改正程序中的错误。一个关系表的行为[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请将语句补充完整:For(inti=0;i<n-1;i++)a[i]=a[7]0(8)已知递归函数f的定义如下:2006年9月二级C++考试试卷第13页(共5页)intf(intn){If(n<=1)return1;//递归结束情况eIsereturnn*f(n-2);//递归}则函数调用语句千⑸的返回值是⑻。(9)创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给出数组元素的初值,则调用缺省构造函数,下列程序涉及到对象数组的创建和单个对象的创建,其输出结果是[9]。incIude<iostream>usingnamespacestd;cIassFoo{pubIic:Foo(intX){cout«,A”}FooO{});intmain()Foof[3],g(3);returnO;)(10)习惯性在下列程序的输出结果是42,请将画线处缺失的部分补充完整。incIude<iostream>Usingnamespaceatd;CIassFoo{intvaIue;2006年9月二级C++考试试卷第14页(共5页)pubIic:Foo():vaIue(0){)VoidsetVaIue(intvaIue){[10]=value;〃给Foo的数据成员value赋值}voidprint(){cout«vaIue;});Intmain()Foof;fosetVaIue(42);foprint();retumO;}(11)如果不能使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基数继承的成员,下列程序没有使用多态机制,其输出结果是[11]。incIude<iostream>usingnamespacestd;cIassBase{pubIic:Voidprint(){cout«'B';}};cIassDerived:pubIicBase{pubIicvoidprint(){cout«'D';}}intmain(){2006年9月二级C++考试试卷第15页(共5页)Derived*pd=newDreived);Base*pb=pd;pb->print();pd->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;vaIue=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<n;++i);intj;for([14];j>0;—j){if(t>a[j-1])break;a[j]=a[j-1];)protected:int*a,n;〃指针a用于存放数组首地址,n用于存放数组元素个数};(15)下列程序的输出结果是[15]#incIude<iostream>usingnamespacestd;cIassA{intapubIic:AO:a(9){)2006年9月二级C++考试试卷第17页(共5页)virtuaIvoidprint0const{cout«a;);};cIassB:pubIicA{charb;pubIic:B(){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++笔试答案一、选择题TOC\o"1-5"\h\z01、 D 02、 A 03、 C 04、 B 05、 D06、 C 07、 D 08、 D 09、 B 10、 A2006年9月二级C++考试试卷第18页(共5页)11、 C 12、 D 13、 D 14、 A 15、 DA 22、 B 23、 B 24、 C 25、 BD 27、 D 28、 A 29、 A 30、 BA 32、 B 33、 C 34、 B 35、 C2007年4月全国计算机等级考试二级C++笔试试题及答案一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是。A)算法的效率只与问题的规模有关,而与数据的存储结构无关.B)算法的时间复杂度是指执行算法所需要的计算工作量C)数据的逻辑结构与存储结构是一一对应的.D)算法的时间复杂度与空间复杂度一定相关.(2)在结构化程序设计中,模块划分的原则是。A)各模块应包括尽量多的功能B)各模块的规模应尽量大C)各模块之间的联系应尽量紧密D)模块内具有高内聚度,模块间具有低耦合度(3)下列叙述中正确的是。A)软件测试的主要目的是发现程序中的错误.B)软件测试的主要目的是确定程序中错误的位置.C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D)软件测试是证明软件没有错误(4)下面选项中不属于面向对象程序设计特征的是。A)继承性B)多态性C)类比性D)封装性(5)下列对列的叙述正确的是。A)队列属于非线性表B)队列按“先进后出”的原则组织数据C)队列在队尾删除数据D)队列按“先进先出”原则组织数据(6)对下列二叉树进行前序遍历的结果为DYBEAFCZXYDEBFZXCAABDYECFXZABCDEFXYZ(7)某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为n+1n-12nn/2(8)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是。A)井B)交C)投影D)笛卡儿乘积(9)在E-R图中,用来表示实体之间是联系的图形是。A)矩形B)椭圆形C)菱形D)平行四边形(10)下列叙述中错误的是。A)在数据库系统中,数据的物理结构必须与逻辑结构一致.B)数据库技术的根本目标是要解决数据的共享问题C)数据库设计是指在已有数据库管理系统的基础上建立数据库D)数据库系统需要操作系统的支持(11)为了取代C中带参数的宏,在C++中使用A)重载函数B)内联函数C)递归函数D)友元函数(12)下列关于类定义的说法中,正确的是A)类定义中包括数据成员和函数成员的声明B)类成员的缺省访问权限是保护的C)数据成员必须被声明为私有的D)成员函数只能在类体外进行定义(13)下列关于派生类构造函数和析构函数的说法中,错误的是A)派生类的构造函数会隐含调用基类的构造函数B)如果基类中没有缺省构造函数,那么派生类必须定义构造函数C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数(14)通过运算符重载,可以改变运算符原有的A)操作数类型B)操作数个数C)优先级D)结合性(15)有如下函数模板:templateTsouare(Tx) (retumx*x;)基中T是A)函数形参B)函数实参C)模板形参D)模板实参(16)使用输入输出操作符setw,可以控制A)输出精度B)输出宽度C)对齐方式D)填充字符(17)下列字符串中,不可以用作C++标识符的是y_2006TESTHReturnswitch(18)字面常量42、4.2、42L的数据类型分别是long、doubleintlong、float、intC)int>double>longD)int、float、long(19)执行下列语句段后,输出字符的个数是fbr(inti=50;1>1;一i)cout«n*"48495051(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=lfiinc(x,y);则变量x和y值分别是0和11和10和21和2(22)有如下程序:#includeusingnamespacestd;classA{publicstaticinta;voidinit(){a=l;}A(inta=2){init();a++;}};intA:;a=0Aobj;Intmain()cout<retumO;运行时输出的结果是0123(23)下列有关继承和派生的叙述中,正确的是A)派生类不能访问基类的保护成员B)作为虚基类的类不能被实例化C)派生类应当向基类的构造函数传递参数D)虚函数必须在派生类中重新实现(24)下列运算符中,不能被重载的是A)&&B)!=.++(25)下列函数模板的定义中,合法的是templateTabs(Tx){returnx<0-x:x;}templateclassTabs(Tx){retumx<0-x;x;}templateTabs(Tx){returnx<0-x;x;}templateTabs(Tx){returmx<0-x;x;}(26)在语句cin»data;中,cin是A)C++的关键字B)类名C)对象名D)函数名(27)有如下程序:#includeusingnamespacestd;classtest{private:inta;public:test(){cout«nconstructorv<test(inta){cout<test(consttest&_test)(a=_testa;cout«,,copyconstructor,,<}test(){cout«vdestructor<};intmain()testA(3)returnO;运行时输出的结果是3constructordestruclorcopyconstructor3dstructordestruclor(28)若有如下类声明classMyClass(public:MyClass(){cout«l;执行下列语句MyClassa,b[2],*P[2]以后,程序的输出结果是111111111D11111(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;)pointC;cout<delete[]ptr;)运行时输出的结果是346D)7(30)如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。#includeusingnamespacestd;classBase{inta,b;public:Bace(intx,inty){a=x;b=y;}Voidshow(){cout<}clsaaDerived:publicBase{intc,d;public:Derived(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;}运行时输出的结果是10,2030,4020,3050,50(31)有如下程序:#includeusingnamespacestd;classA(public;A(inti){x=i;}Voidsispa(){cout<Private:intx;};classB;publicApublic;B(inti):A(i+10){x=i;}vouddispb(){dispa();cout<Private:Intx;};intmain()(Bb(2);b.dispb()return0:)运行时输出的结果是10,212,1012,2(32)虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:#includeusingnamespacestd;classBase(public:virtualvoidf(){cout«nR)+”;)voidg(){cout«“g0+”;classDerived:publicBasepublic:voidf(){cout«n价”;voidg(){cout«^g+“;intmain()(Derivedd;Base*p=&d;p->f();p->g()return0:}运行时输出的结果是f+g+K)+g+f+gO+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:intx;2007年4月二级C++考试试卷第8页(共5页))intmain()(pointa(10)cout«(++a).GetX()cout<return编译和运行情况是A)运行时输出1011B)运行时输出1111C)运行时输出1112D)编译有错(34)有如下程序:#includeusingnamespacestd;intmain(){charstr[100],*p;cout«,,pleaseinputastring:v;cin»str;p=str;for(inti=0;*p!=”\0”;p++,i++);cout«i<return0;运行这个程序时,若输入字符串为abcdefgabed则输出结果是71213100(35)有如下程序::#includeusingnamespacestd:classSample(friendlongfun(Samples);public:Sample(longa){x=a;}Private:longx;};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<return0;}运行时输出的结果是1201615434二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡[1】〜【15】序号的横线上,答在试卷上不得分。(1)在深度为7的满二叉树中,度为2的结点个数为【1】。(2)软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于【2】测试。(3)在数据库系统中,实现各种数据管理体制功能的核心软件称为L3L(4)软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于【4】阶段。(5)在结

温馨提示

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

评论

0/150

提交评论