计算机2级C++等级考试真题文档格式.docx
《计算机2级C++等级考试真题文档格式.docx》由会员分享,可在线阅读,更多相关《计算机2级C++等级考试真题文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
(11)下列关于函数的描述中,错误的是
A)函数可以没有返回值B)函数可以没有参数
C)函数可以是一个类的成员D)函数不能被定义为模板
(12)若MyClass是一个类名,且有如下语句序列
MyClassc1,*c2;
MyClass*c3=newMyClass;
MyClass&
c4=c1;
上面的语句序列所定义的类对象的个数是
A)1 B)2 C)3 D)4
(13)下列关于继承方式的描述中,错误的是
A)如果不显式地指定继承方式,缺省的继承方式是私有(private)
B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员
C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员
D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员
(14)将前缀运算符“--”重载为非成员函数,下列原型中,能正确用于类中说明的是
A)Decr&
operator--(int);
B)Decroperator--(Decr&
int);
C)friendDecr&
operator--(Decr&
);
D)frlendDecroperator--(Decr&
(15)若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列
MyTempp2;
MyTempp3[2];
编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是
A)1B)2C)3D)0
(16)在C++中,cin是个
A)类B)对象C)模板D)函数
(17)在下列字符中,不允许作为C++标识符的是
A)bB)BC)_D)2
(18)下列叙述中,错误的是
A)false是一个逻辑型常量B)"
b"
是一个字符型常量
C)365是一个int常量D)3.1415926是一个double常量
(19)若x和y是程序中的两个整型变量,则下列if语句中正确的是
A)if(x==0)y=1;
elsey=2;
B)if(x==0)theny=1elsey=2;
C)if(x==0)y=1elsey=2;
D)ifx==0y=1;
(20)要定义整型数组x,使之包括初值为O的三个元素,下列语句中错误的是
A)intx[3]={0,0,0};
B)intx[]={0};
C)staticintx[3]={0};
D)intx[]={0,0,0};
(21)关于函数中的<
返回类型>
,下列表述中错误的是
A)<
中有可能包含关键字intB)<
中有可能包含自定义标识符
C)<
中有可能包含字符*D)<
中可能包含[]
(22)要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是
A)MyClassp=MyClass;
B)MyClassp=newMyClass;
C)MyClass&
p=newMyClass;
D)MyClassa,&
p=a;
(23)有如下两个类定义
classXX{
private:
doublex1;
protected:
doublex2;
public:
doublex3;
};
classYY:
protectedXX{
doubley1;
doubley2;
doubley3;
在类YY中保护成员变量的个数是
A)1B)2C)3D)4
(24)下列关于运算符重载的描述中,错误的是
A)可以通过运算符重载在C++中创建新的运算符
B)赋值运算符只能重载为成员函数
C)运算符函数重载为类的成员函数时,第一操作数是该类对象
D)重载类型转换运算符时不需要声明返回类型
(25)下列关于类模板的描述中,错误的是
A)类模板的成员函数都是模板函数
B)可以为类模板参数设置默认值
C)类模板描述了一组类
D)类模板中只允许有一个类型参数
(26)下列控制格式输入输出的操作符中,能够设置浮点数精度的是
A)setprecision
B)setw
C)setfill
D)showpoint
(27)下列程序段中包含4个函数,其中具有隐含this指针的是
intfun1();
classTest{
intfun2();
friendintfun3();
staticintfun4();
A)fun1B)fun2C)fun3D)fun4
(28)有如下程序
#include
usingnamespacestd;
Test(){}
Test(constTest&
t){cout<
<
1;
}
Testfun(Test&
u){Testt=u;
returnt;
intmain(){Testx,y;
x=fun(y);
return0;
运行这个程序的输出结果是
A)无输出B)1C)11D)111
(29)有如下程序
classA{
A(inti=0):
r1(i){}
voidprint(){cout<
'
E’<
R1<
-'
;
}<
p>
voidprint()const{cout<
C'
R1*R1<
voidprint(intx){cout<
P'
R1*R1*R1<
intr1;
intmain(){
Aa1;
constAa2(4);
a1.print
(2);
a1.print();
return0;
}
运行时的输出结果是
A)P8-E4B)P8-C16-C)P0-E4-D)P0-C16-
(30)下列代码声明了3个类
classPerson{};
classStudent:
publicPerson{};
classUndergraduate:
Student{};
下列关于这些类之间关系的描述中,错误的是
A)类Person是类Undergraduate的基类
B)类Undergraduate从类Student公有继承
C)类Student是类Person的派生类
D)类Undergraduate是类Person的派生类
(31)有如下程序
ClassBase{
Base(intx=0):
valB(x){cout<
VALB;
~Base(){cout<
intvalB;
classDerived:
publicBase{
Derived(intx=0,inty=0):
Base(x),valD(y){cout<
VALD;
~Derived(){cout<
intvalD;
intmain(){
Derivedobj12(2,3);
retuen0;
A)2332B)2323C)3232D)3223
(32)下面是类Shape的定义:
classShape{
virtualvoidDraw()=0;
下列关于Shape类的描述中,正确的是
A)类Shape是虚基类B)类Shape是抽象类
C)类Shape中的Draw函数声明有误D)语句“Shapes;
”能够建立Shape的一个对象s
(33)将运算符“+”重载为非成员函数,下列原型声明中,错误的是
A)MyClockoperator+(MyClock,long);
B)MyClockoperator+(MyClock,MyClock);
C)MyClockoperator+(long,long);
D)MyClockoperator+(long,MyClock);
(34)打开文件时可单独或组合使用下列文件打开模式
①ios_base:
:
app②ios_base:
binary
③ios_base:
in④ios_base:
out
若要以二进制读方式打开一个文件,需使用的文件打开模式为
A)①③B)①④C)②③D)②④
(35)有如下程序:
ClassB{
B(intxx):
x(xx){++cout;
x+=10;
virtualvoidshow()const
{cout<
COUNT<
_'
X<
ENDL;
staticintcount;
intx;
classD:
publicB{
D(intxx,intyy):
B(xx),y(yy){++count;
y+=100;
Y<
inty;
intB:
count=0;
B*ptr=newD(10,20);
ptr->
show();
deleteptr;
A)1_120B)2_120C)1_20D)2_20
二、填空题(每空2分,共30分)
请将每一个空的正确答案写在答题卡【l】~【15】序号的横线上,答在试卷上不得分。
(1)一个队列的初始状态为空。
现将元素A,B,C,D,E,F,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为【1】。
(2)设某循环队列的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有【2】个元素。
(3)设二叉树如下:
对该二叉树进行后序遍历的结果为【3】。
(4)软件是【4】、数据和文档的集合。
(5)有一个学生选课的关系,其中学生的关系模式为:
学生(学号,姓名,班级,年龄),课程的关系模式为:
课程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:
选课(学号,【5】,成绩)。
(6)若x和y是两个整形变量,在执行了语句序列
x=5;
y=6;
y+=x--;
后,x+y的值为【6】。
(7)在执行语句序列
inti=0;
doi++;
while(i*i<
10);
时,do后面的循环体语句i++被执行的次数为【7】。
(8)有如下的函数定义:
intXfun(int*a,intn){
intx=*a;
for(int*pa=a+1;
pa<
>
if(*pa>
x)x=*pa;
returnx;
若执行了语句
intx[5]={23,46,78,55,16};
后,通过表达式Xfun(x,5)调用该函数,则得到的返回值为【8】。
(9)有如下的函数定义:
intXfun(intx){
inty=x;
{intx=10;
y+=x;
returnx+y;
通过表达式Xfun(5)调用该函数,则得到的返回值为【9】。
(10)假定Xcs是一个类,该类中一个成员函数的原型为“Xcs*abc();
”,则在类外定义时对应的函数头为【10】。
(11)请将下面的类Date的定义补充完整,使得由语句
DateFirstDay;
定义的对象FirstDay的值为2010年1月1日。
classDate{
Date(【11】):
year(y),month(m),day(d){}
intyear,month,day;
//依次表示年、月、日
(12)请将下面的程序补充完整,使得程序输出“飘是张娜的书”。
classBook{
Book(char*str){strcpy(title,str);
【12】voidPrintInfo(){cout<
TITLE<
chartitle[50];
classMyBook:
publicBook{
MyBook(char*s1,char*s2="
张娜"
):
【13】{strcpy(owner,s2);
virtualvoidPrintInfo(){cout<
"
是"
OWNER<
的书"
charowner[10];
Book*prt=newMyBook("
飘"
prt->
PrintInfo();
(13)在有理数类Rational中重载插入运算符<
,以便按a/q形式输出。
请将<
运算符函数的定义补充完整。
classRational{
Rational(intaa,intqq):
a(aa),q(qq){}
friend【14】operator<
(ostream&
out,Rational&
x)
{
return(out<
X.A<
p?
x.q);
inta,q;
(14)下面的函数定义是某函数模板能够生成的函数实例
intsquare(intn){returnn*n;
doublesquare(doublen){returnn*n;
由此可知,该函数模板的定义是【15】