全国计算机二级C等级考试真题及答案.docx

上传人:b****7 文档编号:8969485 上传时间:2023-02-02 格式:DOCX 页数:65 大小:92.60KB
下载 相关 举报
全国计算机二级C等级考试真题及答案.docx_第1页
第1页 / 共65页
全国计算机二级C等级考试真题及答案.docx_第2页
第2页 / 共65页
全国计算机二级C等级考试真题及答案.docx_第3页
第3页 / 共65页
全国计算机二级C等级考试真题及答案.docx_第4页
第4页 / 共65页
全国计算机二级C等级考试真题及答案.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

全国计算机二级C等级考试真题及答案.docx

《全国计算机二级C等级考试真题及答案.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C等级考试真题及答案.docx(65页珍藏版)》请在冰豆网上搜索。

全国计算机二级C等级考试真题及答案.docx

全国计算机二级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

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)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)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){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;

__elsereturnn*Fun(n-1);__

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1