您现在的位置:首页> 考试报考 > C++ > 计算机等级二级C++语言模拟试题

计算机等级二级C++语言模拟试题

一、选择题(每小题1分,共40分)

1、关于运算符重载,下列表述中正确的是(  )。

A.c++已有的任何运算符都可以重载

B.运算符函数的返回类型不能声明为基本数据类型

C.在类型转换符函数的定义中不需要声明返回类型

D.可以通过运算符重载来创建c++中原来没有的运算符

2、在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是( )。

A.友元函数

B.虚函数

C.构造函数

D.析构函数

3、软件设计中模块划分应遵循的准则是( )。

A.低内聚低耦合

B.高内聚低耦合

C.低内聚高耦合

D.高内聚高耦合

4、如果类A被说明成类B的友元,则( )。

A.类A的成员即类B的成员

B.类B的成员即类A的成员

C.类A的成员函数不得访问类B的成员

D.类B不一定是类A的友元

5、有如下类定义:

class Foo

{

public:

Foo(int v):value(V){}//①

~Foo(){}//②

private:

Foo(){}//③

int value=0://④

};

其中存在语法错误的行是(  )。

A.①

B.②

C.③

D.④

6、下面关于数组的描述错误的是( )。

A.在C++语言中数组的名字就是指向该数组第一个元素的指针

B.长度为n的数组,下标的范围是0~n-1

C.数组的大小必须在编译时确定

D.数组只能通过值参数和引用参数两种方式传递给函数

7、运算符重载是对已有的运算符赋予多重含义,因此( )。

A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义

B.可以改变一个已有运算符的优先级和操作数个数

C.只能重载c++中已经有的运算符,不能定义新运算符

D.C++中已经有的所有运算符都可以重载

8、有如下类和对象的定义:

class Constants{

public:

static double getPI(){return 3.1416;}

};

Constants constants:

下列各组语句中,能输出3.1416的是( )。

A.cout

B.cout<

C.cout

D.cout<

9、 程序流程图中带有箭头的线段表示的是( )。

A.图元关系

B.数据流

C.控制流

D.调用关系

10、下列程序的执行结果为( )。

#include

void main()

{

int a=3,b=0;

int*P =&a;

b=+a++;

cout<<*P<<”,”<

}

A.3,4

B.4,3

C.3,4

D.4,4

[page]

11、 对长度为n的线性表排序,在最坏情况下,比较次数不是n(rt一1)/2的排序方法是( )。

A.快速排序

B.冒泡排序

C.直接插入排序

D.堆排序

12、 字面常量42、4.2、42L的数据类型分别是(  )。

A.long,double、int

B.lon9、float、int

C.int、double、long

D.int、float、long

13、 下列叙述中正确的是(  )。

A.栈是“先进先出”的线性表

B.队列是“先进后出”的线性表

C.循环队列是非线性结构

D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

14、 不能作为重载函数的调用的依据是(  )。

A.参数个数

B.参数类型

C.函数类型

D.函数名称

15、 下列语句中,错误的是(  )。

A.const int buffer=256;

B.const double*point;

C.int const buffer=256;

D.double*eonst point:

16、 下列运算符中,在c++语言中不能重载的是( )。

A.*

B.>=

C.::

D./

17、 有如下说明:

int a[10]={1,2,3,4,5,6,7,8,9,10},* P=a; 则数值为9的表达式是( )。

A.*P+9

B.木(P+8)

C.*P+=9

D.P+8

18、 执行下列语句段后,输出字符“*”的个数是( )。

for(int i=50;i>1;i-=2)Cout<<'*':

A.24

B.25

C.26

D.50

19、 算法的有穷性是指( )。

A.算法程序的运行时间是有限的

B.算法程序所处理的数据量是有限的

C.算法程序的长度是有限的

D.算法只能被有限的用户使用

20、 下面关于break语句的描述中,不正确的是( )。

A.break可以用于循环体内

B.break语句可以在for循环语句中出现多次

C.break语句可以在switch语句中出现多次

D.break语句可用于if条件判断语句内

[page]

21、 有如下类定义:

class Point

{

int xx.yy;

public:

Point():xx(0),yy(0){}

Point(int x,int Y=0):xx(X),YY(Y){}

};

若执行语句

Point a(2),b[3],幸c[4];

则Point类的构造函数被调用的次数是(  )。

A.2次

B.3次

C.4次

D.5次

22、 有如下程序:

#include

using namespace std;

class Basel

{

public:

BaseI(int D.{cout<

一Basel(){}

};

class Base2

{

public:

Base2(int D.{tout<

~Base2(){}

};

class Derived:public Basel,Base2

{

public:

Derived(int a,int b,int c,int D.:Basel(B.,Base2(A.,bl(D.,b2(C.{}

private:

int bl:

int b2:

};

int main()

{

Derived d(1,2,3,4);

return 0;

}

执行这个程序的输出结果是(  )。

A.1234

B.2134

C.12

D.21

23、 以下叙述正确的是( )。

A.函数可以嵌套定义但不能嵌套调用

B.函数既可以嵌套调用也可以嵌套定义

C.函数既不可以嵌套定义也不可以嵌套调用

D.函数可以嵌套调用但不可以嵌套定义

24、 必须用一对大括号括起来的程序段是( )。

A.switCh语句中的Case标号语句

B.if语句的分支

C.循环语句的循环体

D.函数的函数体

25、 软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。

A.学生成绩管理系统

B.C语言编译程序

C.UNIX操作系统

D.数据库管理系统

26、 下面程序的运行结果为( )。

#include

void main()

{

for(int a=0,x=0;!x&&a<=10;a++)

{

a++:

}

cout<

}

A.10

B.1l

C.12

D.0

27、 有如下程序:

#include

using namespace std;

int i=1;

class Fun{

public:

static int i;

int value(){return i—l;}

int value()const{return i+1;}

};

int Fun::i=2;

int main(){

int i=3;

Fun funl;

const Fun fun2:

__________________

return 0;

}

若程序的输出结果是:

123

则程序中下画线处遗漏的语句是(  )。

A.cout<

B.tout<

C.cout<

D.eout<

28、 下列有关模板的叙述中,正确的是( )。

A.函数模板不能含有常规形参

B.函数模板的一个实例就是一个函数定义

C.类模板的成员函数不能是模板函数

D.用类模板定义对象时,绝对不能省略模板实参

29、 运算符重载时不需要保持的性质是( )。

A.操作数个数

B.操作数类型

C.优先级

D.结合性

30、 下列程序的输出结果为( )。

#include

{

if(n<1)return l;

else return n+time(n一1); return 0;

}

void main() {

cout<

}

A.0

B.10

C.15

D.16

[page]

31、 有如下程序:

#include

using namespace std;

class MyClass{

public:

MyClass(int i=0){cout<<1;}

MyClass(const MyClass&x){cout<<2;}

MyClass&operator=(const MyClass&x){cout<<3;retum$this;}

~MyClass()}cout<<4;}

};

int main()

{

MyClass objl(1),obj2(2),obj3(objl);

retum 0;

{

执行这个程序的输出结果是( )。

A.112444

B.11114444

C.121444

D.11314444

32、 在下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。

A.外模式

B.内模式

C.概念模式

D.逻辑模式

33、 有如下程序:

#inClude using namespaCe std; Class Base{

publiC:

void output(){Cout<<1;}

virtual void Print(){Cout<<'B’;} };

Class Derived:publiC Base{ publiC:

void output(){Cout<<2;} void Print(){Cout<<’D ';} };

int main() {

Base * ptr=new Derived; ptr一>output();

ptr一>Print(); delete ptr;

retum0; }

执行这个程序的输出结果是( )。

A.1B

B.lD

C.2B

D.2D

34、以下程序中,错误的行为是( )。

①#include

②class A

③{

④public:

⑤ int n=2;

⑥ A(int val){cout<

⑦ -A(){};

⑧};

⑨void main() ⑩{

? A a(0);

?}

A.⑤

B.⑥

C.⑦

D.?

35、 下列数据结构中,属于非线性结构的是( )。

A.循环队列

B.带链队列

C.二叉树

D.带链栈

36、 有如下程序:

#inClude using namespaCe std; Class A{

publiC:

statiC int a;

void init(  ){。a=1;}

A(int a=2){init(  );a++;} };

int A::a:0: A obj;

int main(  ) {

Cout<

}

运行时输出的结果是(  )。

A.0

B.1

C.2

D.3

37、 软件详细设计产生的图如下:

 

 

该图是( )。

A.N—S图

B.PAD图

C.程序流程图

D.E—R图

38、 秘序调试的任务是( )。

A.设计测试用例

B.验证程序的正确性

C.发现程序中的错误

D.诊断和改正程序中的错误

39、 有如下程序:

#include

using namespace std;

class A{

public:

virtual void fancl(){cout<<”Al”;}

void func2(){cout<<”A2”;}

};

class B:public A{

public:

void funcI(){tout<<”Bl”;}

void func2(){tout<<”B2”;}

};

intmain()}

A*P=new B:

P—>funcl();

P—>func2();

delete p;

return 0;

}

执行这个程序的输出结果是(  )。

A.B182

B.A1A2

C.B1A2

D.AIB2

40、 下列字符串中。不可以用做c++标识符的是(  )。

A.y_2006

B._EST_H

C.Return

D.switch

[page]

二、基本操作题(18分)

41、

请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,其中有枚举DOGCOLOR、狗类Dog和主函数main的定义。程序中位于每个“//ERROR ****found****”下的语句行有错误,请加以改正。改正后程序的输出结果应该是:

There is a white dog named Hoh0. There is a blaCk dog named Haha. There is a motley dog named Hihi. 注意:只修改每个//ERROR****found****女料下的那一行,不要改动程序中的其他内容。

#inClude using namespaCe std; //狗的颜色:黑、白、黄、褐、花、其他

enum DOGCOLOR{BLACK,WHITE,YELLOW,BROWN,PIEBALD,OTHER}; Class Dog{//狗类

DOGCOLOR Color; Char name[20]; statiC int Count; publiC:

Dog(Char nalTle[],DOGCOLOR Color){ strCpy(this一>name,name);

//ERROR**********found**********、

strCpy(this一>Color,Color);

} 1 DOGCOLOR getColor()Const{retum Color;}

//ERROR**********found**********

Const Char * 9etName()Const{return*finin9;} Const Char * 9etColorString()Const{

switCh(Color){

Case BLACK:return”blaCk“; Case WHITE:return”white”:

Case YELLOW:return’"yellow”: Case BROWN:return”brown”; ease PIEBALD:return”piebald”:

}

return”motley”;

}

void show()Const{ . Cout<<”There is a”<

//ERROR**********found**********

Dog dogl(”Hoh0”,WHITE),dog2(”Haha”,BLACK);d0g3(”Hihi”,0THER); d091.show();

dos2.show(); dos3.show(); return 0;

}

三、简单应用题(24分)

42、请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2。此工程中包含一个源程序文件main.cpp,其中有“房间”类Room及其派生出的“办公室”类0ffice的定义,还有主函数main的定义。请在程序中“//****found****”下的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:

办公室房间号:308

办公室长度:5.6

办公室宽度:4.8

办公室面积:26.88

办公室所属部门:会计科

注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“///料料found??料”。

#include

using namespaee std;

class Room{ //“房间”类

int room_n0;//房间号

double length;//房间长度(m)

double width;//房间宽度(n1)

public:

Room(int the—room—n0,double the~length,double the—width):loom—no(the—room—no),length(the—

length),width(the—width){}

int theRoomNo()eonst{return iDonl—n0;}

//返回房间号

double theLength()const{return length;}//返回房间长度

double theWidth()const{return width;}//返回房间宽度

//**********found**********

double theArea()const{_______________}//返回房间面积(矩形面积)

};

class Office:public Room{//“办公室”类

char*depart;//所属部门

public:

Office(int the_room_n0,double the_length,double the_width,eonst char木the_depart)

//**********found**********

:_______________{

depart=new char[strlen(the depart)+1];

//**********found**********

strcpy(_______________);

}

~Office(){delete[]depart;}

const char*theDepartment()const{return depart;}//返回所属部门

};

int main(){

//**********found**********

Office_______________;

cout<<”办公室房间号:”<

<<”办公室长度:”<

<<”办公室宽度:”<

<<”办公室面积:”<

<<”办公室所属部门:”<

return 0;

}

[page]

四、综合应用题(18分)

43、请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,此工程中包含一个源程序文件proj3.cpp,补充编制c++程序proj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,并输出到文件out.dat中。文件in.dat的长度不大于1000字节。

要求:

补充编制的内容写在“//**********”与“//**********”两行之间。实现将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。

注意:程序最后已将结果输出到文件0ut.dat中,输出函数writeToFile已经给出并且调用。

//proj3.cpp

#include

#include

#include

using namespace std;

class doc

{

private:

char*sir;//文本字符串首地址

int length;//文本字符个数

public:

//构造函数,读取文件内容,用于初始化新对象,filename是文件名字符串首地址

doc(char*filename);

void reverse();//将字符序列反转

一doc();

void writeToFile(char*filename);

};

doc::doc(char}filename)

{

ifstream myFile(filename);

int len=1001,tmp;

atr=new char[1en];

length=0;

while((trap=myFile.get())!=EOF)

{

str[1ength++]=trap;

}

str[1ength]=‘\0’;

myFile.close();

}

void doc::reverse(){

//将数组atr中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个

//字符交换……

//*************333*************

//*************666*************

}

doc::~doe()

{

delete[]str;

}

void doc::writeToFile(char*filename)

{

Ofstream (filename);

<

.close();

}

void main()

{

doc myDoc(”in.dat”);

myDoc.reveme();

myDoc.writeToFile(”out.dat”);

}

注:本站稿件未经许可不得转载,转载请保留出处及源文件地址。
免费领取考试冲刺试题

中公QQ群 加入QQ群

加入