您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 全国计算机二级C++等级考试真题及答案
2007年9全国计算机等级考试二级笔试试卷一、选择题(每小题2分,共70分)(11)在函数中,可以用auto,extem,register,和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是AAautoBextemCregisterDstatic(12)对于一个类定义,下列叙述中错误的是BA如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数C如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数(13)如果派生类以public方式继承基类,则原基类的protected成员和public成员在派生类中的访问类型分别是DApublic和publicBpublic和protectedCprotected和publicDprotected和protected(14)下列运算符函数中肯定不属于类FunNumber的成员函数的是DAintoperator-(FunNumber)BFunNumberoperator-()CFunNumberoperator-(int)Dintoperator–(FunNumber)(15)C++中的模板包括CA对象模板和函数模板B对象模板和类模板C函数模板和类模板D变量模板和对象模板(16)如果调用C++流进行输入输出,下面的叙述中正确的是AA只能借助于流对象进行输入输出B只能进行格式化输入输出C只能借助于cin和cout进行输入输出D只能使用运算符》和《进行输入输出(17)下列符号中不属于C++关键字的是DAfriendBnamespaceCcontinueDbyte(18)下列各组的量申明中,含义相同的一组是BAunsignedlongint和longBsignedshortint和shortBunsignedshort和shortDshortint和int(19)必须用一对打括号括起来的程序段是DAswitch语句中的case标号语句Bif语句的分支C循环语句的循环体D函数的函数体(20)语句的int*p=&k定义于指针P,于这个语句等效的语句序列是AAint*p;p=&kBint*p;p=kCint*p;*p=&kDint*p;*p=k(21)关于函数重载,下列叙述中错误的是CA重载函数的函数名必须相同B重载函数必须在函数个数或类型上有所不同C重载函数的返回值类型必须相同D重载函数的函数体可以有所不同(22)有如下头文件Intf1();Staticintf2();ClassMA{PublicIntf3();Staticintf4();(静态函数)};在所描述的函数中,具有隐含的this指针的是CAf1Bf2Cf3Df4(23)派生类的成员函数不能访问基类的CA共有成员和保护成员B共有成员C私有成员D保护成员(24)下列关于运算符重载的描述中,正确的是AA运算符重载为成员函数时,若参数表中五参数,重载的是一元运算符B一元运算符只能作为成员函数重载C二元运算符重载为非成员函数时,参数表中有一个参数DC++中可以重载所有的运算符(25)下列关于类模板的模板参数的叙述中,错误的是DA模板参数可以作为数据成员的类型B模板参数可以作为成员函数的返回类型C模板参数可以作为成员函数的参数类型D模板函数不能作为成员函数的局部变量的类型(26)已知一程序运行后执行的第一个输出操作是BCoutsetw(10)setfill(*)1234则此操作的输出结构是A1234B******1234C**********1234D1234******(27)有如下程序#includeiostrcamUsingnamespacestd;Classmyclass{Public:MyClass(){++count;}~MyClass(){--count;}Staticintgetcount(){returncount;}PrivateStaticintcount;};IntMyClass::count=0;Intmain(){Myclassobj;Coutobj,getCount();MyClass*ptr=newMyClass;CoutMyClass::getcount();Deleteptr;CoutMyClass::gercount();Return();}程序的输出结果是AA121B232C221D122程序的输出结果是CAval=10const:val=20Bconst:val=10const:val=20Cconst:val=10val=20Dval=10val=20(29)有如下程序#includeiostreamUsingnamespacestd;Classpart{Public;Part(intx=(\):val(x){coutval;}-part(){coutval;}Private;Intval;};Classwhole{Public;Whole(intx,inty,intz=0):p2(x),p1(y),val(z){coutval;}Whole(){countval;}Private;Partp1,p2;Intval;};Intmaint{Wholeobj(1,2,3);Resturn();}程序输出的结果是DA123321B213312C213(30)有如下程序:#includeiostreamUsingnamespacestd;Classbase{Public:Base(intx=0){coutx;}};Classderived:publicbase{Public:Derivedrin(x=y){coutx;}Priblic:Baseval;};Intmain(){Derivedd(!);Return();}程序的输出结果是CA0B1C01D001(31)若有如下类定义:ClasssB{Voidfun1(){}Protected;Doublevarl;Public:Voidfun2(){}};ClassD:publicB{Protected;Voidfun3(){}};已知obj是类D的对象,下列语句中不违反成员访问控制的权限的是CAobj.fun1();Bobj.var1;Cobj.fun2();Dobj.fun3();(32)有如下程序:#includeiostreamUsingnamespacesid;Classbase{Public;Voidoutput(){cout1;}Virtualvoidprint(){coutB;}};Classderived:publicbase{Public:Voidoutput(){cout2;}Voidprint(){cout’D’;}};Intmain()Base*passnewderived;Ptr-output();Ptr-print();Deleteptr;Return();}程序的输出结果是DA1BB1DC2BD2D33.下列是重载乘法运算的函数原型声明,其中错误的是AAmyclassoperator*(double,double);Bmyclassoperator*(double,myclass);Cmyclassoperator*(myclass,double);Dmyclassoperator*(myclass,myclass);*是二元运算符,而且标准库里面已经有double*double的运算符定义,返回值为double,所以A的重载是错误的34.A(35)有如下程序:#includeiostreamusingnamespacestd;classB{public:virtualvoidshow(){coutb;}};classD:publicB{public:voidshow(){coutD;}};voidfun1(B*ptr){ptr-show();}voidfun2(B&ref){ref.show();}voidfun3(Bb){b.show();}voidmain(){Bb,*p=newD;Dd;fun1(p);fun2(b);fun3(d);}程序的输出结果是DADBDBBBDCDBBDDbb二、填空题(每空2分,共三十分)(6).在有定义语句:inta=3,b=2,c=1;则表达式ab?a:b的值是_____(7).执行下列语句后,变量sum的值是____.Intsum=0;For(intj=I;j=I;j++)For(intj=I;j=I;j++)Sum++;(8).已知有函数f的定义如下:Intf(){Staticint-6;s-2;returns}则在某程序中第二次执行函数用语句f();时,函数f的返回值是_____.(9)已知如下程序得输出结果时23,请将划线处缺失得部分补充完整。#includeiostreamUsingnamespacestd;Classmyclass{Public:Voidprint()cout{cout23;}}Intmain(){Myclass*p=newmyclass();______print();Return();Classsample{Public:Sample(){}_________}(14)请将如下程序补充完整,使得输出结果为bbaa#includeiostreamUsingnamespacestd;ClassA{Public:_____{cout”aa”;}};ClassB:publicA{Public:~B(){cout”bb”;}};Intmain(){B*p=newB;Deletep;Return();}(15)请将下列栈类stack补充完整Classstack{Private;Intplist[100];//int数组,用于存放栈的元素Inttop;//栈顶元素(数组下标)Public:Stack():top(0){}Voidpush(sonsint&item);//新元素item压入栈Intpop(void);//将栈顶元素弹出栈};Voidstack::pbsh(constint&item){If(top==99)//如果栈满,程序结束Exit(1);Top++;//栈顶指针增1___【15】____;}Intstack::pop(){If(top0)//如果栈空,程序结束Exit(1);Returnplish[top--];}参考答案6.27.68.49.(*p)10.ABBA11.voidBase::fun()12.virtualdisplay()==0;14.-A()15.pList[top]=item2008年9月计算机等级考试一、选择题(每小题2分,共70分)(11)在下列原型所示的C++函数中,按“传值”方式传递参数的是(A)。A)voidf1(intx);B)voidf2(int*x);C)voidf3(constint*x);D)voidf4(int&x);(12)在C++中,编译系统自动为一个类生成缺省构造函数的条件是(A)。A)该类没有定义任何有参构造函数B)该类没有定义任何无参构造函数C)该类没有定义任何构造函数D)该类没有定义任何成员函数(13)在一个派生类的成员函数中,试图调用其基类的成员函数“voidf();”,但无法通过编译。这说明(C)。A)f()是基类的私有成员C)派生类的继承方式为私有B)f()是基类的保护成员D)派生类的继承方式为保护(14)下列关于运算符重载的叙述中,错误的是(B)。A)有的运算符可以作为非成员函数重载B)所有的运算符都可以通过重载而被赋予新的含义C)不得为重载的运算符函数的参数设置默认值D)有的运算符只能作为成员函数重载(15)下列关于模板的叙述中,错误的是(D)。A)调用模版函数时,在一
本文标题:全国计算机二级C++等级考试真题及答案
链接地址:https://www.777doc.com/doc-1871838 .html