计算机等级考试题库,二级C++试题汇总

发布于 2018-10-17 13:44  编辑:simi
0
计算机等级考试题库 扫码微信刷题


考无忧小编每天勤劳不息地搜寻和编写一大批对考生有实用价值的公告、新闻、资料、试题、技巧和各种小道消息免费送给各位亲爱的同学,赶紧先来看看二级C++试题



计算机二级C++试题

1

1.关于C++C语言关系描述中错误的是( )

A.C++语言是C语言的超集

B.C++语言对C语言进行了扩充

C.C++语言包含C语言的全部语法特征

D.C++语言与C语言都是面向对象的程序设计语言

【参考答案】 D

 

2.C++语言中,不合法的实型数据的是( )

A.0.123

B.123e3

C.2.1e3.5

D.123.0

【参考答案】 C

 

3.下面有关于for循环的正确描述是( )

A.for循环只能用于循环次数已经确定的情况

B.for循环是先执行循环体语句,后判断表达式

C.for循环中,不能用break语句跳出循环体

D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

【参考答案】 D

 

4.假定int类型变量占用两个字节,其有定义int x[10]={0,2,4};,则数组x在内存中所占字节数是( )

A.3

B.6

C.10

D.20

【参考答案】 D

 

5.以下叙述正确的是( )

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

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

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

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

【参考答案】 D

 

6.下列叙述中正确的是( )

A.线性表是线性结构

B.栈与队列是非线性结构

C.线性链表是非线性结构

D.二叉树是线性结构

【参考答案】 A

7.已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是( )

A.堆排序

B.直接插入排序

C.快速排序

D.直接选择排序

【参考答案】 B

 

8.下列不属于结构化分析的常用工具的是( )

A.数据流图

B.数据字典

C.判定树

D.PAD

【参考答案】 A

 

9.下列工具中为需求分析常用工具的是( )

A.PAD

B.PFD

C.N-S

D.DFD

【参考答案】 D

 

10.数据库的故障恢复一般是由( )

A.数据流图完成的

B.数据字典完成的

C.DBA完成的

D.PAD图完成的

【参考答案】 C

 

 

 

2

1.下面的语句中错误的是( )

A.int a=5;int x[a];

B.const int a=5;int x[a];

C.int n=5;int *p=new int[a];

D.const int n=5;int *p=new int[a];

【参考答案】 A

 

2.关于二义性的描述错误的是( )

A.一个子类的两个父类中都有某个同名成员,在子类中对该成员访问可能出现二义性

B.解决二义性可以用对成员名的限定法

C.父类和子类中同时出现同名函数,也可能存在二义性

D.一个子类是从两个父类派生出来的,而这两个父类又有一个共同的父类,对该父类成员进行访问时,可能出现二义性

【参考答案】 C

 

3.函数模板:template

T add(T x,T y) {return x+y;}

下列对add函数的调用不正确的是( )

A.add< >(1,2)

B.add(1,2)

C.add(1.0,2)

D.add(1.0,2.0)

【参考答案】 C

 

3.this指针是C++实现什么的一种机制?( )

A.抽象

B.封装

C.继承

D.重载

【参考答案】 B

 

4.下列程序的输出结果是( )

#include

class Myclass{

public:Myclass(int i=0,int j=0)

{

y=j;

}

void show(){cout<<x=

 

5.下列选项,不正确的是( )

A.for(int a=1;a<=10;a++);

B.int a=1;

do

{a++}

while(a<=10)

C.int a=1;

D.for(int a=1;a<=10;a++)a++;

while(a<=10)

{a++}

【参考答案】 B

 

6.下列程序的输出结果为( )

#include

void main()

{char *a[]={hello,the,world};

char **pa=a;

pa++;

cout<<*pa<

A.hello

B.the C.world

D.hellotheworld

【参考答案】 B

 

7.下列程序的输出结果是( )

#include

int min(int a,int b)

{if(a

else return b;

return 0;}

void main()

{cout<

A.0

B.1

C.2

D.3

【参考答案】 B

 

8.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )

A.公有类型

B.私有类型

C.保护类型

D.友元类型

【参考答案】 D

 

9.类的析构函数的作用是( )

A.一般成员函数的初始化

B.类的初始化

C.对象的初始化

D.删除类创建的对象

【参考答案】 D

 

10.下面对静态数据成员的描述中,正确的是( )

A.静态数据成员可以在类体内进行初始化

B.静态数据成员不可以被类的对象调用

C.静态数据成员不能受private控制符的作用

D.静态数据成员可以直接用类名调用

【参考答案】 D

 

 

3

 

1.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )

A.派生类的对象可以赋给基类的对象

B.派生类的对象可以初始化基类的引用

C.派生类的对象可以直接访问基类中的成员

D.派生类的对象的地址可以赋给指向基类的指针

【参考答案】 C

 

2.下列关于虚基类的描述,错误的是( )

A.设置虚基类的目的是为了消除二义性

B.虚基类的构造函数在非虚基类之后调用

C.若同一层中包含多个虚基类,这些基类的构造函数按它们说明的次序调用

D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数

【参考答案】 B

 

3.下列运算符中,在C++语言中不能重载的是( )

A.*

B.>=

C.::

D./

【参考答案】 C

 

4.下列程序的运行结果是( )

#include

class A

{ int a;

public:

A() {a=0;}

A(int aa)

{a=aa;

cout<

void main()

{A x,y(2),z(3);

cout<

A.00

B.23

C.34

D.25

【参考答案】 B

 

5.判断char型变量c是否为小写字母的正确表达式是( )

A.a<=c<=z

B.(c>+A)&&(c<=z)

C.(a>=c)||(z<=c)

D.(c>=a)&&(c<=z)

【参考答案】 D

 

 

 

 

1.数据结构作为计算机的一门学科,主要研究数据逻辑结构、对各种数据结构进行运算,及( )

A.数据的存储结构

B.计算方法

C.数据映象

D.逻辑存储

【参考答案】 A

 

2.在计算机中,算法是指( )

A.加工方法

B.解题方案的准确而完整的描述

C.排序方法

D.查询方法

【参考答案】 B

 

3.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( )

A.软件投机

B.软件危机

C.软件工程

D.软件产生

【参考答案】 B

 

4.开发大型软件时,产生困难的根本原因是( )

A.大系统的复杂性

B.人员知识不足

C.客观世界千变万化

D.时间紧、任务重

【参考答案】 A

 

5.数据库、数据库系统和数据库管理系统之间的关系是( )

A.数据库包括数据库系统和数据库管理系统

B.数据库系统包括数据库和数据库管理系统

C.数据库管理系统包括数据库和数据库系统

D.3者没有明显的包含关系

【参考答案】 B

 

 

 

 

4

综合应用题

使用VC6打开考生文件夹下的工程kt7_3,此工程包含一个源程序文件kt7_3.cpp,其中含有一个类Circle的定义,但该类的定义并不完整。请按要求完成下列操作,将类Circle的定义补充完整。

 

(1)为类Circle增加一个构造函数,该函数有一个参数,并在构造时将该参数值赋给成员radius。将该函数实现为一个非内联函数,并且使用参数列表的方式将类成员赋值。请在注释“//**1**”之后添加适当的语句。

 

(2)为类Circle增加一个成员函数print(  ),使得可以输出有关圆的信息,比如下列程序

Circlec;

c.SetRadius(5);

c.Print(  );

将输出:Thecirclehasradiusof5!

请在注释“//**2**”之后添加适当的语句。

 

(3)完成友元函数voidCompareR(Circle*c1,Circle*c2)的定义,在屏幕中输出c1c2比较radius大小结果,要求使用if-else结构完成。请在注释“//**3**”之后添加适当的语句。

输出结果如下:

Thecirclehasradusof5!

Thecirclehasradiusof10!

c1

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件kt7_3.cpp清单如下:

#include

classCircle{

public:

Circle(  ):radius(5){}

//**1**

voidSetRadius(intr){radius=r;}

intGetRadius(  ){returnradius;}

//**2**

friendvoidCompareR(Circle*c1,Circle*c2);

private:

intradius;};

voidCompareR(Circle*c1,Circle*c2)

{//**3**

cout<<"c1>c2"<

else

if((c1->GetRadius(  ))==(c2->GetRadius(  )))

cout<<"c1=c2"<

else

if((c1->GetRadius(  ))<(c2->GetRadius(  )))

cout<<"c1

voidmain(  )

{Circlec1; 来源:考试大

c1.SetRadius(5);

c1.Print(  );

Circlec2(10);

c2.Print(  );

CompareR(&c1,&c2);}

【参考答案】

(1)Circle(intrad):radius(rad){}

 

(2)voidPrint(  ){cout<<"Thecirclehasradiusof"<

 

(3)if((c1->GetRadius(  ))>(c2->GetRadius(  )))

【试题解析】

本题考查成员函数的定义与实现,友元函数,if分支语句等知识点。友元函数的类体外的定义与一般函数一样,其中if-else的使用,else总是与其最近的那个if配对使用的,书写时最好使用缩进格式,将配对的if-else对齐,以免出错。

 

 

 

 

5

简单应用题

编写一个函数intcharnum(charfn[10]),该函数以只读方式打开文件fn,,通过统计,返回文件中字符的个数,请使用while循环实现计数功能。

注意:部分源程序已存在文件kt7_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数charnum的花括号中填写若干语句。

文件kt7_2.cpp的内容如下:

#include

#include

#include

intcharnum(charfn[10]);

voidmain(  )

{intnum;

num=charnum("abc.txt");

cout<<"num="<

intcharnum(charfn[10])

{

}

【参考答案】

intcharnum(charfn[10])

{fstreamfile;

file.open(fn,ios::in);

if(!file)

{cout<<"abc.txtcantopen"<

abort(  );}

charch;

inti=0;

while(!file.eof(  ))

{file.get(ch);

i++;}

file.close(  );

returni-1;}

【试题解析】

本题主要考查对文件相关操作的熟练程度。首先定义文件流类的变量,然后使用该对象的open方法打开一个文件,接着使用while循环和getch方法每次读入一个字符并统计字符个数,最后使用close方法关闭文件,返回i值。

 

 

 

6

改错题

使用VC6打开考生文件夹下的工程kt7_1,此工程包含一个源程序文件kt7_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

Constructor1

Constructor1

Constructor1

Destructor

Constructor2

Destructor

x=0

x=5

Destructor

Destructor

源程序文件kt21_1.cpp清单如下:

#include

classB

{intx;

public:

B(  ){x=0;cout<<"Constructor1"<

B(inti){x=i;cout<<"Constructor2"<

~B(  ){cout<<"Destructor"<

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

~B(inti){cout<

voidprint(  ){cout<<"x="<

voidmain(  )

{B*ptr;

ptr=newB[2];

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

ptr[0]=B(0);

ptr[1]=B(5);

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

for(inti=0;i<2;)

ptr[i].print(  );

delete[]ptr;}

【参考答案】

(1)~B(inti){cout<

(2)ptr[0]=B(0);改为:ptr[0]=B(  );

(3)for(inti=0;i<2;)改为:for(inti=0;i<2;i++)

【试题解析】

(1)主要考查对析构函数特性的掌握,析构函数不能带参数也不能重载,一个类中只能定义一个析构函数,因为析构函数在删除对象的时候被默认调用,如果含有多个析构函数则可能引起多次删除产生的意外错误;

(2)主要考查对构造函数与函数重载的掌握,由输出结果可知其应该调用不带参数的构造函数B(  );

(3)主要考查对for循环语句的使用,如果在for循环中不写第三个表达式就意味着该循环一直会执行下去,因为i的值总是小于2



刷计算机等级考试题库中,慢慢总结、学习、复习以上的二级C++试题,有效的刷题策略才能事半功倍,考试将至,希望小伙伴们在最后备战的阶段中,精益求精、稳中求进,一次通过!





文章推荐:

全国计算机等级考试可以不考一级直接考二级吗?

2018年全国计算机等级考试题库“二级MS Office 高级应用考试大纲”

全国计算机等级考试报考成功后可以退费吗?(内附计算机等级考试题库)



温馨提示:

考试想拿高分吗?更多计算机等级考试题库二级ms office试题请点击查看>>>二级ms office

想要了解更多的计算机等级考试题库请点击下载>>>计算机等级考试题库

想知道更多关于计算机等级考试题库的最新资讯吗?点击进入>>>计算机等级考试题库资讯


本文网址:http://www.k51.com.cn/info/jsjdjks/1810/1750136.html
选择分享到: