全国计算机二级C++等级考试真题及答案.docx
- 文档编号:26936105
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:64
- 大小:91.69KB
全国计算机二级C++等级考试真题及答案.docx
《全国计算机二级C++等级考试真题及答案.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C++等级考试真题及答案.docx(64页珍藏版)》请在冰豆网上搜索。
全国计算机二级C++等级考试真题及答案
2007年9全国计算机等级考试二级笔试试卷
一、选择题〔每题2分,共70分〕
〔11〕在函数中,可以用auto,extem,register,和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,那么默认的存储类型是A
AautoBextemCregisterDstatic
〔12〕对于一个类定义,以下表达中错误的选项是B
A如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数
B如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数
C如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数
D如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数
〔13〕如果派生类以public方式继承基类,那么原基类的protected成员和public成员在派生类中的访问类型分别是D
Apublic和publicBpublic和protected
Cprotected和publicDprotected和protected
〔14〕以下运算符函数中肯定不属于类FunNumber的成员函数的是D
Aintoperator-(FunNumber)
BFunNumberoperator-()
CFunNumberoperator-(int)
Dintoperator–(FunNumber)
〔15〕C++中的模板包括C
A对象模板和函数模板B对象模板和类模板
C函数模板和类模板D变量模板和对象模板
(16)如果调用C++流进展输入输出,下面的表达中正确的选项是A
A只能借助于流对象进展输入输出B只能进展格式化输入输出
C只能借助于cin和cout进展输入输出D只能使用运算符?
和?
进展输入输出
〔17〕以下符号中不属于C++关键字的是D
AfriendBnamespaceCcontinueDbyte
〔18〕以下各组的量申明中,含义一样的一组是B
Aunsignedlongint和longBsignedshortint和short
Bunsignedshort和shortDshortint和int
(19)必须用一对打括号括起来的程序段是D
Aswitch语句中的case标号语句Bif语句的分支
C循环语句的循环体D函数的函数体
〔20〕语句的int*p=&k定义于指针P,于这个语句等效的语句序列是A
Aint*p;p=&kBint*p;p=k
Cint*p;*p=&kDint*p;*p=k
(21)关于函数重载,以下表达中错误的选项是C
A重载函数的函数名必须一样
B重载函数必须在函数个数或类型上有所不同
C重载函数的返回值类型必须一样
D重载函数的函数体可以有所不同
〔22〕有如下头文件
Intf1();
Staticintf2();
ClassMA{
Public
Intf3();
Staticintf4();(静态函数)
};
在所描述的函数中,具有隐含的this指针的是C
Af1Bf2Cf3Df4
〔23〕派生类的成员函数不能访问基类的C
A共有成员和保护成员B共有成员
C私有成员D保护成员
〔24〕以下关于运算符重载的描述中,正确的选项是A
A运算符重载为成员函数时,假设参数表中五参数,重载的是一元运算符
B一元运算符只能作为成员函数重载
C二元运算符重载为非成员函数时,参数表中有一个参数
DC++中可以重载所有的运算符
〔25〕以下关于类模板的模板参数的表达中,错误的选项是D
A模板参数可以作为数据成员的类型
B模板参数可以作为成员函数的返回类型
C模板参数可以作为成员函数的参数类型
D模板函数不能作为成员函数的局部变量的类型
〔26〕一程序运行后执行的第一个输出操作是B
Cout< 那么此操作的输出构造是 A1234B******1234 C**********1234D1234****** (27)有如下程序 #include Usingnamespacestd; Classmyclass{ Public: MyClass(){++count;} ~MyClass(){--count;} Staticintgetcount(){returncount;} Private Staticintcount; }; IntMyClass: : count=0; Intmain(){ Myclassobj; Cout< MyClass*ptr=newMyClass; Cout< : getcount(); Deleteptr; Cout< : gercount(); Return(); } 程序的输出结果是A A121B232C221D122 程序的输出结果是C Aval=10const: val=20Bconst: val=10const: val=20 Cconst: val=10val=20Dval=10val=20 (29)有如下程序 #include Usingnamespacestd; Classpart{ Public; Part(intx=(\): val(x){cout< -part(){cout< Private; Intval; }; Classwhole{ Public; Whole(intx,inty,intz=0): p2(x),p1(y),val(z){cout< Whole(){count< Private; Partp1,p2; Intval; }; Intmaint{ Wholeobj(1,2,3); Resturn(); } 程序输出的结果是D A123321B213312C213 (30)有如下程序: #include Usingnamespacestd; Classbase{ Public: Base(intx=0){cout< }; Classderived: publicbase{ Public: Derivedrin(x=y){cout< Priblic: Baseval; }; Intmain(){ Derivedd(! ); Return(); } 程序的输出结果是C A0B1C01D001 〔31〕假设有如下类定义: ClasssB{ Voidfun1(){} Protected; Doublevarl; Public: Voidfun2(){} }; ClassD: publicB{ Protected; Voidfun3(){} }; obj是类D的对象,以下语句中不违反成员访问控制的权限的是C Aobj.fun1();Bobj.var1;Cobj.fun2();Dobj.fun3(); (32)有如下程序: #include Usingnamespacesid; Classbase{ Public; Voidoutput(){cout<<1;} Virtualvoidprint(){cout< }; Classderived: publicbase{ Public: Voidoutput(){cout<<2;} Voidprint(){cout<<’D’;} }; Intmain() Base*passnewderived; Ptr->output(); Ptr->print(); Deleteptr; Return(); } 程序的输出结果是D A1BB1DC2BD2D 33.以下是重载乘法运算的函数原型声明,其中错误的选项是A Amyclassoperator*(double,double); Bmyclassoperator*(double,myclass); Cmyclassoperator*(myclass,double); Dmyclassoperator*(myclass,myclass); *是二元运算符,而且标准库里面已经有double*double的运算符定义,返回值为double,所以A的重载是错误的 34.A (35)有如下程序: #include usingnamespacestd; classB{ public: virtualvoidshow(){cout<<"b";} }; classD: publicB{ public: voidshow(){cout<<"D";} }; 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); } 程序的输出结果是D ADBDBBBDCDBBDDbb 二、填空题〔每空2分,共三十分〕 (6).在有定义语句: inta=3,b=2,c=1;那么表达式a 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,请将划线处缺失得局部补充完整。 #include Usingnamespacestd; Classmyclass{ Public: Voidprint()cout{cout<<23;} } Intmain(){ Myclass*p=newmyclass(); ______print(); Return(); Classsample{ Public: Sample(){} _________ } (14)请将如下程序补充完整,使得输出结果为bbaa #include Usingnamespacestd; 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(top<0)//如果栈空,程序完毕 Exit (1); Returnplish[top--]; } 参考答案 6.27.68.49.(*p)10.ABBA11.voidBase: : fun() 12.virtualdisplay()==0;14.-A()15.pList[top]=item 2021年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〕调用模版函数时,在一定条件下可以省略模板实参 B〕可以用int、double这样的类型修饰符来声明模版参数 C〕模板声明中的关键字class都可以用关键字typename替代 D〕模板的形参表中可以有多个参数 〔16〕要利用C++流进展文件操作,必须在程序中包含的头文件是〔B〕。 A〕iostreamB〕fstreamC〕strstreamD〕iomanip 〔17〕以下字符串中不能作为C++标识符使用的是〔B〕。 A〕WHILEB〕userC〕_lvarD〕9stars 〔18〕以下语句中错误的选项是〔D〕。 A〕constinta;B〕constinta=10;C〕constint*point=0;D〕constint*point=newint(10); 〔19〕有如下程序: #include usingnamespacestd; intmain(){ intsum; for(inti=0;i<6;i+=3){ sum=i; for(intj=i;j<6;j++)sum+=j; } cout< return0; } 运行时的输出结果是〔A〕。 A〕3 B〕10C〕12D〕15 〔20〕以下语句中,正确的选项是〔D〕。 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〕;〞,那么以下重载函数声明中正确的选项是〔C〕。 A〕voidfun(inta=90,doubleb=0.0);B〕intfun(inta,doubleB); C〕voidfun(doublea,intB);D〕boolfun(inta,doubleb=0.0); 〔22〕有如下程序: #include usingnamespacestd; classSample{ public: Sample(){} ~Sample(){cout<<'*';} }; intmain(){ Sampletemp[2],*pTemp[2]; return0; } 执行这个程序输出星号〔*〕的个数为〔B〕。 A〕1B〕2C〕3D〕4 〔23〕以下选项中,与实现运行时多态性无关的是〔A〕。 A〕重载函数 B〕虚函数C〕指针 D〕引用 〔24〕以下运算符函数中,肯定不属于类Value的成员函数的是〔B〕。 A〕Valueoperator+(Value);B〕Valueoperator-(Value,Value); C〕Valueoperator*(int);D〕Valueoperator/(Value); 〔25〕以下模板声明中,有语法错误的选项是〔D〕。 A〕template B〕template C〕template D〕template 〔26〕在语句“cout<<'A';〞中,cout是〔B〕。 A〕类名B)对象名C〕函数名D)C++的关键字 〔27〕有如下程序: #include usingnamespacestd; classMyClass{ public: MyClass(inti=0){cout<<1;} MyClass(constMyClass&x){cout<<2;} MyClass&operator=(constMyClass&x) {cout<<3;return*this;} ~MyClass(){cout<<4;} }; intmain(){ MyClassobj1 (1),obj2 (2),obj3(obj1); return0: } 运行时的输出结果是〔A〕。 A〕112444B〕11114444C〕121444D〕11314444 〔28〕有如下程序: #include usingnamespacestd; classMyClass{ public: MyClass(intx): val(x){} voidSet(intx){val=x;} voidPrint()const{cout<<"val="< private: intval; }; intmain(){ constMyClassobj1(10); MyClassobj2(20); obj1.Print(); //语句1 obj2.Print(); //语句2 obj1.Set(20); //语句3 obj2.Set(30); //语句4 return0; } 其主函数中错误的语句是〔C〕。 A〕语句1B〕语句2C〕语句3D〕语句4 〔29〕在类声明中,紧跟在“public: 〞后声明的成员的访问权限是〔A〕。 A〕私有B〕公有C〕保护D〕默认 〔30〕对于通过公有继承定义的派生类,假设其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是〔D〕。 A〕公有或私有B〕私有C〕保护或私有D〕公有或保护 〔31〕定义派生类时,假设不使用关键字显式地规定采用何种继承方式,那么默认方式为〔A〕。 A〕私有继承B〕非私有继承C〕保护继承D〕公有继承 〔32〕建立一个有成员对象的派生类对象时,各构造函数体的执行次序为〔C〕。 A〕派生类、成员对象类、基类B〕成员对象类、基类、派生类 C〕基类、成员对象类、派生类D〕基类、派生类、成员对象类 〔33〕如果表达式a>=b中的“>=〞是作为非成员函数重载的运算符,那么可以等效地表示为〔A〕。 A〕a.operator>=(b)B〕b.operatotr>=(a)C〕operator>=(a,b)〕operator>=(b,a) 〔34〕当使用ofstream流类定义一个流对象并翻开一个磁盘文件时,文件的默认翻开方式为〔B〕。 A〕iosbase: : inB〕ios_base: : binaryC〕ios_base: : in|ios_base: : outD〕ios_base: : out 〔35〕在一个抽象类中,一定包含有〔C〕。 A〕虚函数 B〕纯虚函数C〕模板函数 D〕重载函数 二、填空题〔每空2分,共30分〕 〔6〕当使用关键字__void__作为函数返回类型时,该函数不返回任何值。 〔7〕数组a中有n个元素,以下语句将数组a中从下标x1开场的k个元素移动到从下标x2开场的k个元素中,其中0<=x1 for(inti=x1+k-1;i>=x1;i--) a[_x2+k-1_]=a[i]; 〔8〕有如下程序: #include usingnamespacestd; intfun1(intx) {return++x;} intfun2(int&x){return++x;} intmain(){ intx=1,y=2; y=fun1(fun2(x)); cout< return0: } 程序的输出结果是_2,3_。 〔9〕有如下程序: #include usingnamespacestd; classpumpkin{ public: pumpkin(){++count;} ~pumpkin(){--count;} staticvoidtotal_count(){ cout< } private: staticintcount; }; intpumpkin: : count=0; intmain(){ pumpkinpl[10]; pumpkin: : total_count(); return0; } 这个程序的输出结果是__10pumpkin(s)__。 〔10〕有如下递归函数: intFun(intn){ if(n<=1) return1; _
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国计算机 二级 C+ 等级 考试 答案