计算机二级C++笔试37Word下载.docx
《计算机二级C++笔试37Word下载.docx》由会员分享,可在线阅读,更多相关《计算机二级C++笔试37Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
C.快速排序
D.直接选择排序
当数据表A中每个元素距其最终位置不远,说明数据表A按关键字值基本有序,在待排序序列基本有序的情况下,采用插入排序所用时间最少,故答案为选项[B].。
第5题:
如果表达式++x/y中,++是作为友元函数重载的,/是作为成员函数重载的,则该表达式还可为
A.(operator++(x)).operator/(y)
B.(operator++(0)).operator/(y)
C.operator/((operator++(x,0)),y)
D.operator/((operator++(0)),y)
C++中用成员函数重载++x为:
x.operator++(),用友元函数重载++x为:
operator++(x),用成员函数重载x/y为:
x.operator/(y),用友元函数重载x/y为:
operator/(x,y)。
第6题:
A.输出的是1
B.输出的是1和-2
C.输出的是3和0
D.是死循环
do-while语句的一般格式为do循环体语句while(表达式);
,先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。
本题中,先执行x=x-2,即为1。
判断表达式的值,!
(--x)为真,x=0,继续循环。
再次执行循环体语句后,x=-2,此时表达式的值为0,结束循环。
第7题:
下面的哪个选项不能作为函数的返回类型?
A.void
B.int
C.new
D.long
new是动态申请内存空间时使用的关键字,不能作为函数的返回类型,选项[A].为无返回值,选项(B)为返回整型,选项(D)为返回长整型。
NULL
第8题:
A.89
B.98
C.程序有错误
D.99
考查交换两整数的方法。
【解题要点】两数只在函数change内被使用,函数调用完后该内存被释放,因此没有交换两数。
【考点链接】交换两个数的方法简单说有两种一是使用指针,二是用引用。
第9题:
A.121
B.122
C.112
D.222
C++语言中全局变量是任何函数都可以改变的量,静态变量的有效范围在定义它的类中,而普通的变量的有效性只在使用它的函数中,在本题中c为全局变量,b为静态变量,a为普通变量,b和c在类A的对象a1和a2中都自加1。
所以b,c为2,a为1。
第10题:
A.-1
B.1
C.2
D.编译出错,无法运行
本题的函数是根据a和b的值来给c赋值。
第11题:
下列叙述中,不属于软件需求规格说明书的作用的是
A.便于用户、开发人员进行理解和交流
B.反映出用户问题的结构,可以作为软件开发工作的基础和依据
C.作为确认测试和验收的依据
D.便于开发人员进行需求分析
D
软件需求规格说明书(SRS,SoftwareRequirementSpecificafon)是需求分析阶段的最后成果,是软件开发中的重要文档之一。
它有以下几个方面的作用:
①便于用户、开发人员进行理解和交流;
②反映出用户问题的结构,可以作为软件开发工作的基础和依据;
③作为确认测试和验收的依据。
第12题:
类的析构函数的作用是
A.一般成员函数的初始化
B.类的初始化
C.对象的初始化
D.删除类创建的对象
析构函数就是用来释放对象的,它的调用完成之后,对象也就消失了,相应的内存空间也被释放了。
第13题:
在设计程序时,应采纳的原则之一是
A.不限制goto语句的使用
B.减少或取消注解行
C.程序越短越好
D.程序结构应有助于读者理解
滥用goto浯句将使程序流程无规律,可读性差,因此选项[A].不选;
注解行有利于对程序的理解,不应减少或取消,选项[B].也不选;
程序的长短要依照实际情况而论,而不是越短越好,选项[C].也不选。
第14题:
关于虚函数下面说的正确的是
A.若在重定义虚函数时使用了virtual,则该重定义函数还是虚函数
B.虚函数不能声明为友元
C.子类必须重定义父类的虚函数
D.虚函数不能是static的
虚函数一定不能定义为静态的。
虚函数可以声明为友元,子类也不是必须重定义父类的虚函数,若在重定义虚函数时使用了virtual,则该重定义函数不一定还是虚函数。
第15题:
以下各选项组中,均是C++语言关键字的组是
A.publicoperatorthis
B.shodstringstatic
C.itwhile>
=
D.privatecoutprintf
关键字是系统已预定义的单词,在程序中有不同的用途,考生应该熟记。
第16题:
在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是
A.友元函数
B.虚函数
C.构造函数
D.析构函数
构造函数在创建对象时系统自动调用,其功能是使用给定的值将对象初始化。
第17题:
下面关于C++语言变量的叙述错误的是
A.C++语言中变量分为auto,static,extem和register四种存储类型
B.自动变量和外部变量的作用域为整个程序
C.内部静态变量的作用域是定义它的函数
D.外部静态变量的作用域是定义它的文件
自动变量是函数体或分程序内定义的变量,它的作用域在所定义的函数体内或分程序体内。
第18题:
下列描述中哪个是正确的?
A.派生类构造函数中没有调用父类构造函数则没有对父类初始化
B.子类构造函数不能是内联函数
C.派生类构造函数中可以对父类数据成员赋值
D.构造函数的返回值为void类型
C++语言中继承中的赋值问题。
【解题要点】C++语言中基类的构造函数是可以被派生类继承并赋值的。
【考点链接】构造函数和析构函数均无返回值。
第19题:
A.不定值
B.33
C.30
D.10
考查C++语言中数组初始化问题。
【解题要点】如果定义数组时没有进行初始化,则其各个成员的值不确定。
【考点链接】使用数组时应先赋初值。
第20题:
在软件生产过程中,需求信息的给出是
A.程序员
B.项目管理者
C.软件分析设计人员
D.软件用户
软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
第21题:
树是结点的集合,它的根结点数目是
A.有且只有1
B.1或多于1
C.0或1
D.至少2
树是一个或多个结点组成的有限集合,其中一个特定的结点称为根,其余结点分为若干个不相交的集合。
每个集合同时又是一棵树。
树有且只有1个根结点。
第22题:
已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是
A.acbed
B.decab
C.deabc
D.cedba
依据后序遍历序列可确定根结点为c;
再依据中序遍历序列可知其左子树由deba构成,右子树为空;
又由左子树的后序遍历序列可知其根结点为e,由中序遍历序列可知其左子树为d,右子树由ba构成,如下图所示。
求得该二叉树的前序遍历序列为选项[D].。
[*]
第23题:
A.11
B.12
C.21
D.22
本题考查考生对拷贝构造函数的掌握。
因为++运算是右结合的,所以在使用a对b赋值时,b的num变为1而a的num变为2(先赋值再自加)。
第24题:
下列不属于软件调试技术的是
A.强行排错法
B.集成测试法
C.回溯法
D.原因排除法
掌握软件调试技术的方法、【解题要点】调试的关键在于推断程序内部的错误位置及原因。
主要的调试方法有强行排错法、回溯法和原因排除法。
【考点链接】软件调试的各种方法及各种方法的区别。
第25题:
下面不属于软件设计原则的是
A.抽象
B.模块化
C.自底向上
D.信息隐蔽
软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们是抽象、模块化、信息隐蔽和数据独立性。
自底向上是集成测试中增量测试的一种。
第26题:
对于模板定义关键字class和typename说法不正确的是
A.程序中的class并不能都替换为typename
B.class和typename都可互相替换
C.程序中的typename都能替换为class
D.程序中的部分class可以替换为typename
在C++程序中的typename是都可以替换为class的,但class不能都替换为typename。
第27题:
A.1234
B.1324
C.1342
D.3142
本题考查的是在继承中构造函数和析构函数的调用顺序,应该是先调用基类的构造函数,再调用派生类的构造函数,调用析构函数时的顺序是先调用派生类的析构函数,后调用基类的析构函数。
第28题:
A.10
B.程序有误
C.1
D.0
考查return语句的用法和函数的调用。
【解题要点】本题函数Max的功能是求出两个整数中的较大者,并且通return语句返回。
【考点链接】retum语句的用法,注意return的条件。
第29题:
设inta=1,b=2;
,则(a++)+b和a+++b这两个表达式的值分别为
A.3,3
B.3,4
C.4,3
D.4,4
单目的++运算优先级高于双目的+运算,不过++的结合性是自右向左的,而+是自左至右的,所以上面的两个表达式都是先计算a+b的值之后,a再自加1。
第30题:
下列叙述中,不属于结构化程序设计方法的主要原则的是
A.自顶向下
B.由底向上
C.模块化
D.限制使用goto语句
本题考查了结构化程序设计的原则。
【解题要点】结构化程序设计方法的主要原则可以概括为以下4个方面,即自顶向下、逐步求精、模块化及限制使用goto语句。
第31题:
在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示
A.模块之间的调用关系
B.程序的组成成分
C.控制程序的执行顺序
D.数据的流向
让考生对常用的软件结构设计工具要有较深入的了解。
【解题要点】常用的软件结构设计工具是结构图(SC-StructureChart),也称程序结构图。
其中,矩形内用于注明模块的功能和名字;
箭头表示模块间的调用关系,带实心圆的箭头表示传递的是控制信息,带空心圆的箭头表示传递的是数据。
【考点链接】根据结构图设计思想,了解结构图构成的基本形式。
第32题:
A.a[p-a]
B.,*(&a[i])
C.p[i]
D.a[10]
通常,引用一个数组元素可以用下标法,如a[P-a]形式,或指针法,如。
(&a[[i])的形式,本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。
第33题:
拷贝构造函数的参数一般是
A.某对象名
B.某对象成员名
C.某对象的引用名
D.指向对象的指针名
C++语言中拷贝构造函数的参数一般是某个对象的引用名。
第34题:
C++语言中标点符号中表示一条预处理命令开始的是
A.#
B.;
C.
D.{
C++语言中预处理语句的开始符号是#。
第35题:
为了提高测试的效率,应该
A.随机选取测试数据
B.取一切可能的输入数据作为测试数据
C.在完成编码以后制定软件的测试计划
D.集中对付那些错误群集的程序
测试的目的是发现软件中的错误。
经验表明,程序中存在错误的概率与该程序中已发现的错误数成正比。
这一现象说明,为了提高测试效率,测试人员应该集中对付那些错误群集的程序。
二、填空题(每空2分,共30分)
第36题:
软件危机出现于60年代末,为了解决软件危机,人们提出了 ()_______ 的原理来设计软件,这就是软件工程诞生的基础。
软件工程学
详细解答:
第37题:
通过使用new和delete两个运算符进行的分配为()______存储分配。
动态
本题考查的是对动态分配内存的掌握,在C++语言中,使用关键字new和delete进行动态内存申请和释放。
第38题:
如果类B继承了类A,则称类A为类B的基类,类B称为类A的 ______ 。
派生类
如果类A为类B的基类,那么类B称为类A的派生类。
第39题:
将x+y中的+运算符用友元函数重载应写为 ()_______ 。
[operator+(x,y)]
C++中用成员函数重载x+y为x.operator+(y);
,用友元函数重载x+y为operator+(x,y)。
第40题:
如果要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是 ()_______ 。
[friendvoidA();
]
C++中类的友元函数在声明时应在该函数前面加上关键字friend,同样如果要声明一个类为另一个类的友元类也要在前面类名前加上friend。
第41题:
数据流图的类型有 ()_______ 和事务型。
变换型
典型的数据流类型有两种:
变换型和事务型。
变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;
在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。
第42题:
软件维护活动包括以下几类:
改正性维护、适应性维护、()_______维护和预防性维护。
完善性
改正性维护、适应性维护、完善性维护和预防性维护。
改正性维护是指在软件交付使用后,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程;
适应性维护是指为了使软件适应变化,而去修改软件的过程;
完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性;
预防性维护是为了提高软件的可维护性、可靠性等,为以后的进一步改进软件打下良好基础。
第43题:
C++在重载运算符中,如用成员函数重载一元运算符参数表中需要()_______个参数,如用友元函数重载一元运算符参数表中需要()_______个参数。
0\1
[题解]命题目的:
考查C++中运算符重载中用成员函数和友元函数重载。
【解题要点】C++中友元函数重载一元运算符要有一个参数,重载二元运算符要有两个参数,而用成员函数重载时,重载一元运算符没有参数,重载二元运算符要有一个参数。
第44题:
一个C++语言程序的开发步骤通常包括编辑、 ()_______ 、链接、运行和调试。
编译
C++语言程序开发的基本步骤是编辑、编译、链接、运行和调试。
第45题:
一个类可以从直接或间接的祖先中继承所有属性和方法。
采用这个方法提高了软件的 ()_______ 。
可重用性
本题考查了继承的优点:
相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。
第46题:
Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面 ()_______ 的设计方法。
数据结构
对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较log2n次,而顺序查找需要比较n次。
第47题:
栈和队列通常采用的存储结构是()_____。
[链式存储和顺序存储]
考查考生对数据结构基本知识的了解。
【解题要点】栈和队列都属于线性表,它们一般采用顺序存储结构,也可以对它们采用链式存储结构。
【考点链接】栈、数组、表采用的存储结构,各种存储结构的定义和区别。
第48题:
语句cout<<'
'
\n'
还可表示为()_______。
[cout<<end1;
考查"
\n"
和end1的意义。
【解题要点】"
表示换行,end1也可表示换行。
【考点链接】end1和"
可以通用。