国家二级(C++)笔试模拟试卷26_第1页
国家二级(C++)笔试模拟试卷26_第2页
国家二级(C++)笔试模拟试卷26_第3页
国家二级(C++)笔试模拟试卷26_第4页
国家二级(C++)笔试模拟试卷26_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

眼家二级(C++)笔试模拟试卷第1套

一、公共基础选择题(本题共70题,每题7.0分,共

10分。)

1、软件工程的理论和技术性研究的内容主要包括软件开发技术和()。

A、消除软件危机

B、软件工程管理

C、程序设计自动化

D、实现软件可重用性

标准答案:2

知识点解析:软件工程的目标是:在给定的成本、进度的前提下,开发出具有有效

性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和

可互相操作性且满足用户需要的产品。基于这一目标,软件工程的理论和技术研究

性的主要内容包括:软件开发技术和软件工程管理。

2、在模块化程序设计中,按功能划分模块的原则是()。

A、各模块的功能尽量单一,旦各模块之间的联系尽量的少

B、各模块的功能尽量单一,且各模块之间的联系尽量紧密

C、各模块应包括尽量多的功能

D、各模块应包括尽量多的输入输出操作

标准答案:1

知识点解析:模块化设计是指把一个大程序按人们能理解的大小规模进行分解。划

分模块的基本原则是使每个模块都易于理解。按照人类思维的特点,按功能来划分

模块最为自然。在按功能划分模块时,要求各模块的功能尽量单一,各模块之间的

联系尽量的少。

3、在一棵二叉树中,第5层的节点数最多为()。

A、32

B、16

C、15

D、31

标准答案:2

知识点解析:根据二叉树的性质:二叉树第i层上至多有2i-l个结点,所以第5层

的结点数最多是16。

4、两个或两个以上模块之间关联的紧密程度称为()。

A、耦合度

B、内聚度

c售菇碌

D:数储传输特性

标准答案:1

知识点解析:在结构化程序设计方法中,一个模块内部各个元素间彼此结合的紧密

程度是指模块的内聚度,而模块间互相连接的紧密程度称为耦合度。

5、将E・R图转换到关系模式时,实体与联系都可以表示成()。

A、属性

B、关系

C、键

D、域

标准答案:2

知识点解析:把概念模型转换成关系数据模型就是把E-R图转换成一组关系模

式,每一个实体转换为一个关系模式,每个联系分别转换为关系模式。

6、在E-R图中,用来表示实体的图形是()。

A、矩形

B、椭圆形

C、菱形

D、三角形

标准答案:1

知识点解析:在E-R图中,矩形用来表示实体,菱形表示实体间的联系。

7、下列关于对列的叙述中正确的是()。

A、在队列中只能删除数据

B、在队列中只能插入数据

C、队列是先进后出的线性表

D、队列是先进先出的线性表

标准答案:8

知识点解析:队列是允许在一端进行插入而在另一端进行删除的线性表。在队列

中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删

除。因此,队列又称为“先进先出”或“后进后出''的线性表。

8、在深度为4的满二叉树中,叶子节点的个数为()。

A、16

B、8

C、7

D、15

标准答案:2

知识点解析:满二叉树的第k层上有2匕1个结点,且深度为m的满二叉树有2m-l

个结点。

9、检查软件产品是否符合需求定义的过程称为()。

A、确认测试

B、集成测试

C、单元测试

D、白盒测试

标准答案:2

知识点解析:系统测试是把经过测试的子系统装配成一个完整的系统来测试。在这

个过程中不仅应该发现没计和编码的错误,还应该验证系统确实能提供需求说明书

中指定的功能,而且系统的动态特性也符合预定要求。

10、下列有关数据库的描述,正确的是()。

A、数据库是一个DBF文件

B、数据库是一个关系

C、数据库是一个结构化的数据集合

D、数据库是一组文件

标准答案:4

知识点解析:数据库是数据的集合,它具有统一的结构形式并存放于统一的存储介

质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有

"集成''和“共享”的特点。

二、选择题(本题共25题,每题1.0分,共25分。)

II、要把多个目标程序组成可执行文件,需要使用()。

A、编辑程序

B、链接程序

C、调试程序

D、编译程序

标准答案:2

知识点解析:C++是以编译方式实现的高级语言。C++程序的实现必须要使用某种

C++语言的编译器进行编译。编译器的功能是将程序的源代码(.cpp)转换为机器代

码的形式,称为目标代码(.obj)。然后,再使用目标代码进行链接,生成可执行文

件(.exe),等待下一步执行的过程。

12、下列字符常量的写法中,正确的是()。

A、匕be'

B、,\5A,

C、A

D、\73'

标准答案:8

知识点解析:选项A不是一个字符常量,因为C++基本数据类型中不存在与其相

对应的类型,如果将起止符号改为双引号,它就是一个字符串类型的常量。选项B

知识点解析:本题考查订语句中if与else的搭配问题。C++程序在编译时并不看缩

进格式,而只是关心语法结构。根据规定:else关键字总是与它前面最近的未配对

的且可见的那个if关键字配对。因此上述程序中的else应该与第2个订关键字配

对,所以程序最后c的值并没有改变。

17、若有定义如下:charx[10]="VisualCn,y[]="++6.0";则下列选项中对字符串

操作错误的是()。

A、strcpy(x,y);

B、strcat(x,y);

C、gcts(x);

D、cout<<strlen(x);

标准答案:2

知识点解析:选项A将字符数组y的内容复制到字符数组x中,操作后x的内容

为++6.0,而字符数组y不变;选项C将键盘输入字符串赋给x字符数组;选项D

输出字符串x的长度;而选项B要将字符数组y的内容连接到字符数组x的后面由

于连接后的字符串长度为14(8+5+1)字节,超过字符数组x的声明长度,因此操作

不合法。

18、已知:intn=10:在下列定义引用的语句中,正确的是().

A^int&x=n;

B、intx=&n;

C、int&x;

D>int&x=&n;

标准答案:1

知识点解析:引用是个别名,建立引用后,引用即作为目标的别名而使用,对引用

的改动实际上就是对目标的改动。要求引用的声明语句要同时包括变量的数据类

型、引用操作符“&”、引用名、赋值符号和目标名。引用在声明时必须进行初始

化.一日初始化,便不能作为其他变量的引用而使用C

19、以下程序输出的结果是()。#include<iostream>usingnamespacestd;int

main(){int**x,*y,z=10;y=&z;x=&y;cout<<**x+l<<endl;return

0:}

A、11

B、x的地址

C、y的地址

D、运行错误

标准答案:1

知识点解析:执行语句丫=&2;后,指针y指向了变量z。执行语句*=&丫;后,指

针**x指向z。所以**x的值为z的值10,那么程序最后输出为11。

20、下列叙述中错误的是()。

A、主函数main也可以带形参

B、函数中通过©urn返回函数值

C、调用函数必须在一条独立的语句中完成

D、一个函数中可以有多条return语句

标准答案:4

知识点解析:当函数有返回值时,调用函数可以作为一个表达式的子表达式,而不

是作为一条独立的语句存在。

21、一个血型变量,在程序中多次频繁使用,最好定义它为()。

A、auto

13、register

C、static

D、extern

标准答案:2

知识点解析:寄存器类型变量常用于循环变量、数组下标等频繁使用的变量。将变

量放入寄存器内,可以加快程序的运行速度。

22、下面程序输出的结果是()。#includc<iostrcam>usingnamespacestd;intfuc

(char*x);intmain(){cout<<fuc("hello")<<endl;return0;}intfuc(char

*x){char*y=x;while(*y!=,\0,)y-H-;return(y-x);}

A、5

B、6

C、0

D、语法错误,不能输出结果

标准答案:1

知识点解析:函数fuc()的功能是计算字符串x的长度,因此程序的输出是5。

23、C++中,对于结构中定义的成员,其默认的访问权限为()。

A、protected

B、public

C、static

D、private

标准答案:2

知识点解析:C++中,结构与类的不同之处在于结构中的成员默认是公有的,结构

的继承默认也是公有的;而类的继承默认是私有的,类的成员默认也是私有的。

24、下列有关构造函数的描述错误的是()。

A、构造函数在说明类变量时自动执行

B、构造函数可以重载

C、构造函数可以设置默认参数

D、构造函数可以对静态数据成员进行初始化

标准答案:8

知识点解析:选项A、选项B和选项C都是构造函数的特征,类中的静态数据成

员是类的所有对象共享的,所以它必须有单独的初始化,不能由类的构造函数进行

初始化。

25、若有一个MyClas类,则执行语句MyClasa,b(2),*p;后,自动调用该类的

构造函数()次。

A、2

B、3

C、4

D、不确定

标准答案:1

知识点解析:C++在创建一个对象时,会自动调用类的构造函数,在构造函数中可

以执行初始化成员变量的操作。题目中语句创建了两个对象a、b和一个对象指

针。在创建a和b时,系统会调用类的构造函数。而在创建指针p时,不调用类的

构造函数,因为指针p本身不定义类对象,而是定义一个可以指向MyClas对象的

指针。

26、卜列程序段的执行结果为()。#include<ioslream>usingnamespacestd;class

example{intn;public:example(inti){n=i;)voidadd()(s+=n;)staticints;void

pr(){cout<<s<<cndl:});intexample::s=0;intfuc(char*x);int

main(){examplex(2),y(3),z(4);x.add();y.add();z.pr();return0;}

A、2

B、3

C、5

D、6

标准答案:4

知识点解析:s为静态数据成员,其初始值为0。a,b,c为定义的3个对象,其各

自的私有成员n为2.3.4c执行x.add();语句后,s=2:再执行y.add():后.

s=5;最后执行输出语句z.pr(),即输出s的值5。

27、在公有派生的情况下,派生类中定义的成员函数只能访问原基类的()。

A、公有成员和保护成员

B、公有成员和私有成员

C、私有成员和保护成员

D、公有成员、私有成员和保护成员

标准答案:1

知识点解析:无论在什么派生情况下,派生类总是能够访问到基类公有和保护成

员,而无法访问到基类的私有成员。

28、下列关于抽象类和纯虚函数的说法错误的是(),

A、抽象类只能作为基类使用,而纯虚函数的实现由派生类给出

B、抽象类是指具有纯虚函数的类

C、纯虚函数是一种特殊的虚函数,它允许没有具体的实现

D、一个基类的说明中有纯虚函数,则该基类的派生类一定不再是抽象类

标准答案:8

知识点解析:一个抽象类的派生类在重新定义一个纯虚函数时,可以继续将之声明

为纯虚函数,此时该派生类仍然为抽象类。

29、下列运算符不能在C++中重载的是()。

A、?:

B、-

C、<=

D、+

标准答案:1

知识点解析:C++中,除了“?"这5个运算符外,其他运

算符都可以重载。

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

A、对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的

信息,则都可以省略

B、对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参

数,则都可以省略

C、对于常规参数所对应的模板实参,任何情况下都不能省略

D、对于虚拟类型参数所对应的模板实参,若能够省略则必须省略

标准答案:4

知识点解析:本题考核函数模板的使用。函数的实参可以省略,但模板实参的省略

并不是必然的,而是有条件的。

31、cout是I/O流库预定义的()。

A、

B、

、象

C成

D、

标准答案:4

知识点解析:C++中包含了4个预定义的流对象:cout、cin、cerr、clog。

32、使用setw()这样的操作符对数据进行格式输出时,应包含头文件()。

A、iostream.h

B>fstream

C^iomanip.h

D、stdlib.h

标准答案:4

知识点解析:所有不带形参的操作符都定义在头文件iosiream.h中,而带形参的操

作符则定义在头文件iomanip.h中。setw()是带形参的操作符,使用时应包含

iomanip.h头文件。

33、在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状

态;其中只能用于检测输入流状态的操作函数名称是()。

A、fail

B、eof

C、bad

D、good

标准答案:2

知识点解析:在本题的4个选项中,只有eof函数能用于检测输入操作。

34、下面程序的输出结果是()。#includc<iostrcain>usingnamespacestd;void

main(){inti=l;while(i<=8)if(++i%3!=2)continue;elsecout<<i;}

A、369

B、258

C、36

D、25

标准答案:2

知识点解析:本题程序执行的流程是:首先对i自增,然后判断i被3除的余数是

否是2;如果是,就输巴。所以程序输出的结果是258。

35、在C++中用来实现运行时多态性的是()。

A、重载函数

B、析构函数

C、构造函数

D、虚函数

标准答案:8

知识点解析:C++中的多态性分为两类:编译时的多态性和运行时的多态性。编译

时的多态性通过函数重载和模板体现的,而运行时的多态性是通过虚函数体现的。

三、公共基础填空题(本题共5题,每题7.0分,共5

分。)

36、在模块化设计过程中,【】用来衡量模块内部各个元素彼此结合的紧密程

度。

标准答案:内聚

知识点解析:内聚是用来判断模块独立性的一个标准,用来衡量模块内部各个元素

彼此结合的紧密程度。

37、数据流图中父图和子图的平衡是指【】。

标准答案:子图的输入、输出数据流同父图中的输入输出完全一致

知识点解析:数据流图中父图和子图应平衡,即子图的输入、输出数据流同父图中

的输入输出完全一致。

38、实体关系图(E-R图)是用来描述【】。

标准答案:描述数据对象及数据对象之间的关系

知识点解析:结构化分析方法中ERD图用以数据建模,描述数据对象及数据对象

之间的关系。

39、二叉树由三个基本单元组成,即左子树,右子树和【】。

标准答案:根节点

知识点解析:二叉树由根节点、左子树和右子树组成。

40、哈夫曼树是【】。

标准答案:带权路径长度最小的二叉树

知识点解析:哈夫曼树是带权路径长度最小的二叉树,又称最优二叉树。

四、填空题(本题共10题,每题1.0分,共10分。)

41、指针类型变量在内存中占有一个存储单元,它用于存储【】。

标准答案:变量的地址

知识点解析:指针类型变量用于存储变量的地址。

42、程序文件的编译错误分为连接错误和【】两类。

标准答案:语法错误

知识点解析:程序文件的编译错误分为语法错误和连接错误。

43、下面的函数是检验输入的字符是大写还是小写或者不是26个字母,请填空。

#include<iostream>usingnamespacestd;voidfunjcharch){if((ch>=,a,)&&(ch<

=2))cout<V”是小写字母:"V<ch<<endl;else{If[]coutVV”是大写字母:"

VVehVVendl;elsecoutVV”是其他字符:"VVehVVendl;|)voidmain(){char

ch;coutVV”请输入一个字符:";cin»ch;fun(ch);)

标准答案:((ch>='A')&&(ch〈=,Z,))

知识点解析:根据题意,如果满足条件输出“是大写字母",所以if后的条件应设置

为((ch>=,A,)&&(ch>=Z))。

44、下面函数的作用是【】。iniindex(in【x,inia口,in[n){for(inii=0;i<n;i++)

{if(a[i]==x)returni;)returni;)

标准答案:数组a中查找x,若有则返回第一个x的下标,若没有则返回n

知识点解析:函数的作用是通过变量数组,在数组中查找x,若找到则显示下标

45、im(*p)⑹;,当有定义ima[4]⑹,并让p指向它的语句是[】。

标准答案:p=a

知识点解析:p为指针,它指向一个一维数组,这个一维数组的每个元素又是一个

数组,它有6个整型元素。

46、对指定类型对象动态分配内存并返回该类型的指针的是使用【】运算符来完

成的。

标准答案:new

知识点解析:new运算符对指定类型对象动态分配内存并返回该类型的指针。

47、重载函数的实现和功能不同,但函数的【】相同。

标准答案:函数名称

知识点解析:重载函数的函数名称相同,但函数的实现和功能不同。系统是靠参数

个数或参数类型来决定采用哪个函数的。

48、当派生类中有和基类相同名字的成员时,派生类的同名成员会【】基类的成

员。

标准答案:覆盖

知识点解析:当派生类中有和基类相同名字的成员时,派生类的同名成员会覆盖基

类的成员,如果派生类对象想访问基类的同名成员,需使用“类名::”加以区分。

49、纯虚函数是在基类中声明但没有定义的虚函数,可以声明该函数为纯虚函数是

在【】置于虚函数的原型后完成的。

标准答案:=0

知识点解析:在普通的虚函数后面加上“=0”,这样就声明了一个纯虚函数。

50、类模板成员函数体外定义时,必须用与声明该类模板一样的lemplate<class

模板形参〉声明,使它成为【】。

标准答案:函数模板

知识点解析:类模板是对类的抽象,代表一类类,这些类具有相同的功能,但数据

成员类型及成员函数返回类型和形参类型不同。如果成员函数类外定义,并且此成

员函数带有模板参数,则必须用与声明该类模板一样的templateVclass模板形参,

声明,并且类名后加上模板参数〈模板形参〉,使它成为函数模板。

国家二级(C++)笔试模拟试卷第2套

一、公共基础选择题(本题共io题,每题1.0分,共

10分。)

1、在数据结构中,从逻辑上可以把数据结构分成()。

A、动态结构和静态结构

B、线性结构和非线性结构

C、集合结构和非集合结构

D、树形结构和图状结构

标准答案:2

知识点解析:逻辑结构即数据元素之间的逻辑关系,是从逻辑关系上描述数据,与

数据的存储无关。因此艰据数据元素与数据元素之间的关系,逻辑结构被分为两大

类:线性结构和非线性结构。而集合结构与非集合结构、树形结构和图状结构指的

都是特定的数据结构类型。

2、在一个长度为n的线性表中插入一个元素,以下说法不正确的是()。

A、最好情况下需要移动的数据元素数目为0

B、最坏情况下需要移动的数据元素数目为n

C、在平均情况下需要移动的数据元素数目为n/2

D、最坏情况下需要移动的数据元素数目为n/2

标准答案:8

知识点解析•:在一般情况下,要在第i个元素之前插入一个新元素时,首先是从最

后一个元素开始,直到第i个元素之间共n-i十1个元素依次向后移动一个位置,最

好情况指的是在线性表的最后的元素之后插入一个新元素,不需要移动表中元素,

选项A是正确的。最坏情况指的是在线性表的第一个元素之前插入一个新元素,

则需要移动表中所有的元素,选项B是正确的。在平均情况下需要移动的数据元

素数目为n/2,选项C是正确的。

3、下列关于栈的叙述中,不正确的是()。

A、在栈的两端都能插入或删除数据

B、在栈中只能从一端插入或删除数据

C、栈中的数据是先进后出

D、栈是一种特殊的线性表

标准答案:1

知识点解析:栈的插入和删除运算都只在一端进行。即它的一端是封闭的,不允许

进行插入与删除元素。一端是开口的,允许进行插入与删除元素,选项B是正确

的。栈中的数据是先进后出的,选项C是正确的。栈是一种特殊的线性表,选项

D是正确的。

4、下列各项中,属于面向对象程序设计语言不同于其他语言的主要特点的是()。

A、继承性

B、消息传递

C、多态性

D、静态联编

标准答案:1

知识点解析:继承是一个类(子类)直接使用另一个类(父类)的所有属性和方法(权限

为私有的属性和方法除外)。它可以减少相似的类的重复说明,从而体现出一般性

与特殊性的原则,这使得面向对象程序设计语言有了良好的重用性,也是其不同于

其他语言的最主要特点。

5、在结构化方法中,软件功能分解属于下列软件开发中的阶段是()。

A、详细设计

B、需求分析

C、总体设计

D、编程调试

标准答案:4

知识点解析:软件系统结构的总体设计包括:基于功能层次结构建立系统、按功能

划分成模块的层次结构、确定每个模块的功能、建立与已确定的软件需求的对应关

系、确定模块间的调用关系和模块间的接口、评估模块划分的质量等方面。详细设

计的任务是:在使用程序设计语言编制程序以前.,对所采用算法的逻辑关系进行分

析,设计出全部必要的过程细节,并给予清晰的表达。需求分析是指用户对目标软

件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需

求、求精、建模和定义需求,通常包括:功能需求、性能需求、环境需求、可靠性

需求、安全保密要求、用户界面需求、资源使用需求、成本消耗需求、开发进度需

求等。编程调试的任务是诊断和改正程序中潜在的错误。综上所述。软件功能分解

只能发生在总体设计阶段。

6、下列各种调试方法中,靠演绎、归纳以及二分法来实现的是()。

A、强行排错法

B、回溯法

C、原因排除法

D、静态调试

标准答案:4

知识点解析:本题考查对几种调试方法的掌握,其中强行排错法是最常用也是最低

效的,主要思想是通过“计算机找错”。回溯法是从出现错误征兆处开始,人工沿控

制流程往回追踪,直至发现出错的根源。这是在小程序中常用的一种有效的调试方

法。程序变大后,可能的回溯路线显著增加I,以致人工进行完全回溯望而不可及。

静态调试是一种调试手段,主要是指通过人的思维来分析源程序代码和排错。

7、设树T的度为4,其中度为1,2,3,4的节点个数分别为4,2,1,1。则T

中叶子节点数为()。

A、8

B、7

C、6

D、5

标准答案:1

知识点解析:节点的度——节点拥有子树的个数。树中节点总数为:

1*4+2*2+3*1+4*1=15与根节点之和,即15+1=16。树中非叶子节点数为

4+2+l+l=8o树中叶子节点数为:16-8二8

8、数据管理技术的发展是与计算机技术及其应用的发展联系在一起的,经历了由

低级到高级的发展过程。分布式数据库、面向对象数据库等新型数据库是属于()。

A、人工管理阶段

B、文件系统阶段

C、数据库系统阶段

D、高级数据库技术阶段

标准答案:4

知识点解析:本题考查数据库系统的发展,考生应掌握数据库发展的各个阶段,分

布式数据库、面向对象数据库属于数据库系统阶段。

9、一棵含18个节点的二叉树的高度至少为()。

A、3

B、4

C、5

D、6

标准答案:4

知识点解析:在二叉树的零层,有20=1个节点即根节点。第1层根据根节点子节

点的个数最多有2个节点。第2层的节点总数最多有4个,以此类推,二又树的第

n层的节点数最多为2n°一棵含18个节点的二叉树的高度至少为5。

10、设有n元关系R及m元关系S,则关系R与S经笛卡儿积后所得新关系是一

个()元关系。

A、m

B、n

C^m+n

D、m*n

标准答案:4

知识点解析:本题考核对笛卡儿积运算的掌握。笛卡儿积是两个关系的合并操作,

因此n元关系R与m元关系S经笛卡儿积后所得新关系是m+n元关系。

二、选择题(本题共20题,每题1.0分,共20分。)

II、下列关于对象概念的描述中,错误的是()。

A、C++中的对象就是C语言中的结构变量

B、对象代表着正在创建的系统中的一个实体

C、对象是一个状态和操作(或方法)的封装体

D、对象之间的信息传递是通过消息进行的

标准答案:1

知识点解析:C++中的对象与C语言中的结构变量是不一样的。对象是某一类类型

的变量,而结构变量是结构类型的变量。同时C++对C的结构有了扩展,结构可

以和类一样使用。①结构除了可以包含数据成员外,还可以包含成员函数;②成

员也可以加上public、private和protected访问控制;③结构之间也可以继承。两

者惟一的不同之处是,结构中的成员默认是公有的,结构的继承默认是公有的,而

类的继承默认是私有的,类的成员默认也是私有的。

12、下列变量定义中,合法的是()。

A、short_a=1-1e-1;

B、doubleb=l+5e2.5;

C^longdo=0xfdaL;

D^float2_and=1-e-3;

标准答案:2

知识点露析:本题考核变量名的定义和赋值。在选项A中,把实型表达式作为初

值赋给整型变量,显然是非法的。在选项C中,使用了C++保留字do作为变量

名,是错误的。在选项D中,表达式中的标识符2and是非法的。

13、下列关于C++运算符结合性的说法中,正确的是().

A、赋值运算符是左结合的

B、复合运算符是左结合的

C、单目运算符是左结合的

D、双目算术运算符是左结合的

标准答案:8

知识点解析:运算符的结合方式有两种:左结合和右结合。左结合表示运算符优先

与其左边的标识符结合进行运算,如加法:右结合表示运算符优先与其右边的标识

符结合,如单目算术运算符+和一。赋值运算符、复合运算符和单目运算符都是右

结合的.双目算术运算符是左结合的,所以只有选项D是正确的.

14、t为int类型,进入下面的循环之前,t的值为0。while(t=l){.••}则以下叙

述中,正确的是()。

A、循环控制表达式的值为0

B、循环控制表达式的值为1

C、循环控制表达式不合法

D、以上说法都不对

标准答案:2

知识点解析:本题考核对while循环及逻辑表达式的理解。循环控制表达式为赋值

表达式永远为1(为真)。

15、下列关于指针运算的描述中,错误的是()。

A、在一定条件下,两个指针可以相加

B、在一定条件下,两个指针可以进行逻辑判断

C、在一定条件下,指针可以为空值

D、在一定条件下,两个指针可以相互赋值

标准答案:1

知识点解析:本题考核由针的赋值和运算。在C++语言中,指针可以进行赋值运

算、算术运算、比较运算(逻辑判断)。但是在任何条件下,两个指针都不能允许相

加。因为地址相加后可能会对内存进行不合法的访问。所以选项A的描述是错误

的。

16、有以下程序:#include<iostream>usingnamespacestd:voidfun(inti,intj)

{cout<<(i+j)<.<end1;}voidtun(inti){cout<<i++<<endl;}intmain(){int

a=l;fun(A);return0;}该程序执行后的输出结果是()。

A、1

B、2

C、3

D、4

标准答案:1

知识点解析:本题考核函数重载这个知识点。函数「un有两种实现:第1种实现

中,有两个int型形参,第2个实现中,是1个血型形参。由于这两种实现方式中

形参的个数不同,形成了函数的重载。在主函数中,由于传递给函数fun()的实参

为1个整型变量a,所以调用函数fun()的第2中实现,输出1。

17、下列关于静态数据成员的描述中,正确的是(),

A、静态数据成员是类的所有对象共享的数据

B、类的每个对象都有自己的静态数据成员

C、类的不同对象有不同的静态数据成员值

D、静态数据成员不能通过类的对象调用

标准答案:1

知识点解析:静态数据成员是被类的所有对象共享,它不属于类的任何一个对象.

它的作用域是类范围。静态数据成员在每个类对象中并不占有存储空间,它只是每

个类中分配有存储空间,供所有对象公用。静态数据成员的值对每个对象都一样,

但它的值可以被任何一个对象更新,从而实现了同一类的不同对象之间的数据共

早。

18、下列关于构造函数的描述中,错误的是()。

A、构造函数可以设置默认参数

B、构造函数在定义类对象时自动执行

C、构造函数可以是内联函数

D、构造函数不可以重载

标准答案:8

知识点解析:构造函数是类的一个特殊成员函数,它与类同名,并且没有返回值。

C++在创建一个对象时,会自动调用类的构造函数,在构造函数中可以执行初始化

成员变量的操作。构造函数可以是内联函数,也可以重载。

19、下列描述中,表达错误的是()。

A^公有继承时基类中的public成员在派生类中仍是public的

B、公有继承时基类中的private成员在派生类中仍是private的

C、公有继承时基类中的protected成员在派生类中仍显protected的

D、私有继承时基类中的public成员在派生类中是private的

标准答案:2

知识点解析:C++中,继承方式控制了基类中具有不同访问属性的成员在派生类中

的访问属性。基类中的私有成员在派生类中是隐蔽的,只能在基类内部访问。所以

选项B是错误的。派生类中的成员不能访问基类中的私有成员,但可以访问基类

中的公有成员和保护成员。此时派生类对基类中各个成员的访问能力与继承方式无

关,但继承方式将影响基类成员在派生类中的访问控制属性。基类中公有成员和保

护成员在派生类中的访问控制属性将随着继承方式向改变:派生类从基类公有继承

时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从

基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员;派生

类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成

员在派生类中仍然为保尹成员。所以,选项A、C和D都是正确的。

20、下列关于虚函数的说法中,正确的是()。

A、如果在重定义虚函数时使用了保留字viriual,则该重定义函数仍然是虚函数

B、虚函数不得声明为静态函数

C、虚函数不得声明为另一个类的私有函数

D、派生类必须重新定义基类的虚函数

标准答案:2

知识点。析:使用虚函数时必须注意下列事项:①只有类的成员函数才能说明为

虚函数。这是因为虚函数仅适用于有继承关系的类对象,所以普通函数不能说明为

虚函数。②静态成员函数不能是虚函数,因为静态成员函数不受限于某个对象。

③内联函数不能是虚函数,因为内联函数是不能在运行中动态确定其位置。即使

虚函数在类的内部定义,编译时仍将其看作是非内联的。④构造函数不能是虚函

数,因为构造时对象还是一片未定型的空间。只有在构造完成后,对象才能成为一

个类的名副其实的实例。⑤析构函数可以是虚函数,而且通常说明为虚函数。说

明虚函数的目的在于;使用delete运算符删除一个对象时,能确保析构函数被正确

地执行。这是因为设置虚析构函数后,可以利用动态联编方式选择析构函数。⑥

一般要求基类中说明了虚函数后,派生类说明的虚函数应该与基类中虚函数的参数

个数相等,对应参数的类型相同。如果不相同,则将派生类虚函数的参数类型强制

转换为基类中虚函数的参数类型。

21、有以下程序:#include<iostream>usingnamespacestd;intmain(){intintone;

int&rlnt=intone;intone=5;rlnt=7;cout<<intOne<<'\"<<rinl<<end1;return0;}

上述程序执行后的输出结果是()。

A、5,7

B、7,5

C、5,5

D、7,7

标准答案:8

知识点解析:程序中,引用rim用intone初始化以后,无论改变intOne还是rlnt,

实际上都是intone,两者的值是一样的。所以执行语句“rlnt=7;”后,整型变量

intOne.rlnt的值都被置为7。

22>若有以下程序:#include<iostream>usingnamespacestd;intmain(){inta[4]

[4]={{1,2,3,-4}40,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};inti,j,s=0;for(i=0;i<

4;i++){for(j=O;j<4;j++){if(a[i][j]>=0)continue;s+=a[i][j];})cout<<s<<

end1;return0;)执行后的输出结果是()。

A、-138

B、141

C、75

D、-1

标准答案:1

知识点解析:本题属于综合题,考查多个方面的知识点。程序首先定义了一个二维

数组a,并初始化其值。在内层for循环体中,遇到大于等于0的数,就继续执行

下次循环,否则就执行"s+=a[i][j『,即把其值累加并保存在变量s中。所以本题双

重循环的功能是:计算数组中所有负数的累加和,即s=・138°

23、若有如下程序:#include<iostream>usingnamespacestd;intmain(){char

*p="abcdefgh",*r;long*q;q=(long*)p;q++;r=(char*)q;cout<<r<<end1;return

0;)上述程序的输出结果是()。

A、abcdefgh

B、0

C>abed

D、efgh

标准答案:8

知识点解析:本题定义了一个字符型指针变量p,并通过赋初值让它指向了一个字

符串。还定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句

“q=(k)ng*)p;",把p的地址值强制转换为长整型地址值并赋值给q,然后执行

“q++;”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再

强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址。最后输出

r指向的字符串。

24N有以下程序:#include<iostream>usingnamespacestd;classR{public:R(int

fl,intr2){Rl=rl;R2=r2;)voidprint();voidprint()const;private:intRi,R2;};void

R::print(){cout<<Rl<<<*,H<<R2<<endl;)voidR::print()const{cout<<RI

VV","VVR2VVendl;)intmain(){Ra(5,4);constRb(20,52);b.print();return

0;}执行后的输出结果是

A、5,4

B、20,52

C、0,0

D、4,5

标准答案:2

知识点解析:使用consi关键词修饰的对象成为常对象,题中对象b被声明为类R

的常对象。使用const关键词说明的成员函数称为常成员函数,类R中用cons[重

载了函数print。。在使用常对象和常成员函数时应注意以下几点:①const是函数

类型的一个组成部分,因此在函数部分也要带const关键词。②常成员函数不能

更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。③如果

将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其

他的成员函数。④const关键词可以参与区分重载函数。本题中,b为类R的常对

象,通过b只能调用类R的常成员函数print。输出20,52。

25、有以下程序:#include<iostrcam>usingnamespacestd;classsample{private:

intx;public:voidsetx(inti){x=i;)intputx(){returnx;}};intmain(){sample冬p;

sampleA[3];A[0].setx(5);A[l].setx(6);A[2].setx(7);for(intj=0;j<3;j++)

{p=&A|j];cout<<p->putx()<<",n;)cout<<endl;return0;}执行后执行结果

是()。

A、5,6,7,

B、5,5,5,

C、6,6,6,

D、7,7,7,

标准答案:1

知识点解析:对象数组是指数组元素为对象的元素,该数组中的每一个元素都是同

一个类的对象。程序中,定义了类sample的对象数组A,并调用各个对象的成员

函数给其私有数据成员赋值。然后通过for循环将其值输出。

26、有以下程序:#include<iostream>#include<string>usingnamespacestd;

classY;classX{private:intx;char*strx;public:X(inta,char*str){x=a;strx=new

char(strlen(str)+l];strcpy(strx,str);)voidshow(Y&ob););classY{private:inty;char

*stry;public:Y(intb,char*slr){y=b;stry=newchar[strlen(str)+l];strcpy(stry,str);)

friendvoidX::show(Y&ob);};voidX::show(Y&ob){cout<<strx<<'\cout<

<ob,stry<<endl;}intmain(){Xa(10,"Xn);Yb(20,"Y");a.show(B);return0;}

执行后的输出结果是()c

A、X,Y

B、a,b

C、X,X

D、Y,Y

标准答案:I

知识点解析:本题考核类的定义和友元函数的应用。①该程序中,类X的成员函

数show。在类Y中说明为友元,因此,在该友元成员show。中可以访问类Y的私

有成员stryo②成员函数show。的功能就是输出类X的私有成员strx和Y对象ob

的私有成负stry,③主函数main。中定义了X类的一个对象a和Y类的一个对象

b,并且都进行了初始化。然后调用对象a的成员函数show,输出对象a中私有成

员strx中的内容和对象b中私有成员stry中的内容:即字符串stringX和stringYo

27>若有以下程序:#include<iostream>usingnamespacestd;#definePI3.14class

Point{private:intx,y;public:Point(inta,intb){x=a;y=b;)intgetx(){returnx;|int

gcty(){returny;));classCircle:publicPoint{private:intr;public:Circlc(inta,int

b,intc):Point(a,b){r=c;)intgetr(){returnr;)doublearea(){returnPI*r*r;});int

main(){Circlecl(5,7,10);cout<<cl.area()<<endl;return0;)程序执行后的输出

结果是()。

A、3M

B、157

C、78.5

D、153.86

标准答案:1

知识点解析:本题考核派生类的定义和应用。本程序设计了一个点类Point,包含

了横、纵两个坐标数据x和y,由它派生出了圆类Circle,并加入了新的数据成

员,即一个半径数据,和一个求圆面积的函数成员area。在主函数中,首先定义

了一个圆Circle类的对象cl,并通过它的构造函数初始化其数据成员。由此可

知,其半径r的值为10,所以其面积为PI*1O*IO=314,即对象cl的函数成员area

的返回值为34。

28若有以卜程序:#include<iostream>usingnamespacestd;classBase(private:

inta,b;public:Base(intx,inty){a=x;b=y;}voiddisp(){cout<<a<<H"<<b<<

endl;)};classDerived:publicBase{private:intc;intd;public:Derived(intx,inty,int

z,intm):Base(x,y){c=z;d=m;}voiddisp()(cout<<c<<""<<d<<endl;));

intmain(){Baseb(5,5),*pb;Derivedobj(l,2,3,4);pb=&obj;pb->disp();return0;)执

行程序后的输出结果是()。

A、1,2

B、3,4

C、2,3

D、5,5

标准答案:1

知识点解析:本题考核基类指针的使用。本题首先定义了一个基类Base和一个由

Base派生出来的派生类Derived。在主函数中,定义了•个基类Base指针pb和基

类对象b,还定义了派生类Derived的对象obj。然后将派生类对象。bj的地址赋值

给指向基类Base的指针pbo由于Derived是Base的子类型,因此允瘁上述赋值,

但这时指针pb只能使用从基类Base继承的成员,即当pb指向。bj对象时,pb->

disp还是调用基类Base的成员函数disp。所以程序最后输出的对象d中对基类成

员的初始化值,即1,2o

29、下面是“二维向量”vcctor2D的定义,其中作为成员函数重载的运算符的功

能是将两向量的分量x和y对应相加,然后返回作为相加结果的新对象。那么应该

在横线上填入的语句是()oclassvector2D{private:doublex;//x分量doubley;//y

分量public:vector2D(dcublex0=0,doubley0=0):x(xO),y(yO){)voidshow(cout<<,(*

<<\,<<y<<,)*;};};vector?D::operator+

(vector2Da){returnvector20(x+a.x,y+a.y);}

A、vector2Doperator+(vector2Db)

B、vector2Doperator+(vector2D&b)

C、voidoperator+(vcctoi'2D)

D、intoperator+(vector2Db)

标准答案:1

知识点解析:此题在类vector2D中将运算符重载为成员函数,实现将两向量的

分量x和y对应相加的功能。那么由题可知,在空格处填入的应当是运算符“十”重

载函数的声明。根据运算符“+”重载函数在类体外的定义可知其声明语句为:

vector2Doperator+(vector2DB)

30、有以下程序#inclube<iostream.h>classClassOne{public:ClassOne(intv=O)

{i=v;cout<<i;}voidprint(){cout<<i<<endl;)};classClassTwo{public:

ClassTwo(intv=O){i=v:cout<<i;Jvoidprint(){cout<<i<<endl;)private:

ClassOnemyObj;inti;);voidmain(){ClassTwoobj(l);obj.print();}

A、11

B、111

C、110

D、101

标准答案:1

知识点解析:类ClassTwo中定义了成员对象myObj,所以在构造类ClassTwo的对

象obj时会先调用类ClassOne的构造函数输出0,然后调用ClassTwo的构造函数

输出1。主函数最归调月obj的成员函数print。输出1o所以最Jn结果为011。

三、公共基础填空题(本题共4题,每题分,共4

分。)

31、设栈S和队列Q的初始状态为空,元素el、e2、e3、e4、e5和e6依次通过栈

S,一个元素出栈后即进入队列Q,若6个元素出队的顺序是e2、e4、e3、e6、

e5、el,则栈S的容量至少应是【】。

标准答案:大于3

知识点解析:栈的操作原则“后进先出”,队列的操作原则“先进后出出队列顺序

即为入队列顺序,而入队列顺序也就是出栈顺序是:e2、e4、e3、e6、e5、el。为

得到出栈顺序为e2、e4、e3、e6>e5、el°则入栈操作应为el、e2进栈,e2到

栈。(进栈后有el、e2,出栈后仅有el)e3、e4进栈,e4、e3出栈。(进栈后有el、

e3、e4,出栈后仅有elje5、e6进栈,e5>e6、el出栈。(进栈后有el、e5、e6,

出栈后为空)。

A

B

D

32、下图所示的二叉树的先序遍历序列是【】。—

标准答案:ABDGCEHIF

知识点解析:二叉树的遍历是很重要的知识点,先序、中序、后序三种不同的方式

要比较来掌握,注意其中的区别。此类题一定要先看清题目要求的是哪种遍历方

法,然后根据不同遍历的特点来计算。本题要求是先序遍历,其遍历顺序应该为

①访问根节点:②先序遍历左子树;③先序遍历布子树。按照定义,先序遍历序

列是ABDGCEHIFo

33、数据库管理系统是位于【】之间的软件系统。

标准答案:用户与操作系统

知识点解析:本题考核数据库管理系统的基本概念。数据库管理系统是一个帮助用

户创建和管理数据库的应用程序的集合。因此,数据库管埋系统需要操作系统的支

持,为用户提供服务。

34、有以下程序:#include<iostream>usingnamespacestd;intmain(){int

i=OIO,j=10:cout<<(++i)<<,';1<<i-<<end1;return0;}则该程序运行后

的输出结果是【】。

标准答案:9,10

知识点解析:本题考核刍增运算符和自减运算符的使用以及常量的表示形式。程序

中i的值是八进制,代表十进制中的8,++i是在语句运算前自身加1,而j•一是在

语句运算结束:后减K

四、填空题(本题共8题,每题7.0分,共8分。)

35、若有以下程序:#inckide<iostream>usingnamespacestd;intmain(){char

a;a='H'-'A'+'O';cout<<a<<endl;return0;}执行后输出的结果是【】。

标准答案:7

知识点解析:字符型数据可作为整型参加算术运算,其值为其对应的ASCII

码。的结果是7,加,(T后是7的ASCII码,所以输出的是字符7。

36、若二维数组b有m列,则在前的元素的个数为【】。

标准答案:i*m+j

知识点解析:二维数组b有m列,说明二维数组b每行中有m个元素,所以在

之前的元素为i*m+j。

37、若有如下程序段:#include<iostream>usingnamespacesld;intmain(){char

*p=1,abcdefgh",*r;long*q;q=(long*)p:q++;r=(char*)q;cout<<r<<

endl;return0;)该程序的输出结果是【】。

标准答案:efgh

知识点解析:本题定义了一个字符型指针变量p,并通过赋初值让它指向了一个字

符串,还定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句

“a=(long*)p;",把p的地址值强制转换为长整型地址值并赋值给小然后执行

”,地址值增加了4,执行语句“r=(char*)q:”,把长整型指针变量q的值再

强制转换成字符型地址值并赋给r,r的值应为字符串中字符飞”的地址。最后输出

「指向的字符串。

38、以下程序的输出结果是[]o#include<iostream>usingnamespacestd;

voidfun(){staticinta=0;a+=2;cout<<a;)intmain(){intCC;for(CC=1;cc

<4;CC++)fun();cout<<endl;return0;}

标准答案:246

知识点解析:本题考核函数调用和静态变量。在主函数中通过一个for循环调用了

3次fun()函数。第1次调用fun()函数时,a的初始值为0,执行语句“a+=2;”后,

a的值为2,输出2;第2次调用时,a的初始值为2,执行语句“a+=2;”后,a的

值为4,最后输出4:笫3次调用时,a的初始值为4,执行语句“a+=2:”后,a的

值为6,最后输出6。

39、假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默

认析构函数首部形式为【】。

标准答案:〜MyClass。

知识点解析:C++中析构函数名是在类名前加上求反符号一。析构函数不能指定返

回类型,它隐含有返回值,由系统内部使用。析构函数没有参数,因此析构函数不

能重载。一个类中只能定义一个析构函数。

40、[]使一个函数可以定义成对许多不同数据类型完成同一个任务。

标准答案:函数模板

知识点解析:本题考核函数模板与重载函数的区别。重载函数通常是基于不同的数

据类型完成类似的操作;而函数模板则是对不同的数据类型完成相同的操作,它比

重载函数的要求更严格。

41、若有以下程序:#include<iostream>usingnamespacestd;classSample

{private:constintn;public:Sample(inti):n(i){)voidprint(){cout<<"n="<<n<<

end1;)};intmain(){samplea(IO);a.print();return0;}上述程序运行后的输出结果

是【】。

标准答案:n=10

知识点解析:本题考核常成员数据的应用。类Sample中,定义了一个常数据成员

n,所以构造函数只能通过初始化列表来初始化它。

42、有以下程序:#include<iostream>#include<fstream>usingnamespacestd;

intmain()(ofstreamofile("D:\\test.txt");if(!ofile){ccut<<"test.txtcan'topen"<<

end1;return0;}ofile<<nThisbookisC++"<<"n<<12345<<end1;ofile.close();

ifstreamifile("D:\\test.txt');if(!ifile){cout<<ntest.txtcan'topen'1<<end1;return

0;}charstr[80];ifile>>str;ifile.close();cout<<str<<endl;return1;}程序执行后

的输出结果是【】。

标准答案:This

知识点解析:本题考核文件的I/O操作。程序中的初始化值不能被修改,所以程序

最后输出n=10。另外程序中定义了ofstream类的对象ofile和ifstream类的对象

ifile,然后利用对象ofile在文件test.txt中写入“ThisbookisC++12345“。最后利用

对象ifile打开文件,将其中的数据输入到变量和中,由于读时遇到空F时就终

止,所以str中存放的字符串为“This”。

五、填空题(含2小题)(本题共2题,每题7.0分,

共2分。)

43、下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其他

元素不变。请填空完成此程序。#include<iostream>#include<string>using

namespacestd;intmain(){chara[]="changuagen,t,m;inti,j,k;k=strlen(A);for(i=0;i

<=k-2;i+=2){m=i;for(j=i+2;j<=k;[])if(a[m]>a[j]m=j;if([]){t=a[i];

a[i|=a[m];a|m|=t;}}cout<<a<<end1;return0;)

标准答案:j+=2(或j=j+2)m!=i

知识点解析:本题将字符数组a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论