全国计算机二级C++等级考试真题及答案.doc
《全国计算机二级C++等级考试真题及答案.doc》由会员分享,可在线阅读,更多相关《全国计算机二级C++等级考试真题及答案.doc(39页珍藏版)》请在冰点文库上搜索。
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
2008年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)iostream B)fstreamC)strstream D)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)10 C)12 D)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)1 B)2 C)3 D)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)templateTfun(Tx){returnx;}
B)templateTfun(Tx,intn){returnx*n;}
C)templateTfun(T*p){return*p;}
D)templateTclassA{Tn;};
(26)在语句“cout<<'A';”中,cout是(B)。
A)类名 B)对象名C)函数名 D)C++的关键字
(27)有如下程序:
#include
usingnamespacestd;
classMyClass{
public:
MyClass(inti=0){cout<<1;}
MyClass(constMyClass&x)