1、二级 C+笔试-312 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.派生类对象对其基类中的什么成员是可访问的?(分数:2.00)A.公有继承的私有成员B.私有继承的公有成员C.私有继承的保护成员D.保护继承的保护成员2.下列程序段的输出结果是#includeiostreamhvoid fun(int * X,int * y)cout * X * y;* X=3;* y=4;void main( )int x=1,y=2;fun(i+)switch(stri)case1:x4+;case2:x3+;case3:x2+;case4:x1+;
2、cout x1 “,“ x2 “,“ x3 “,“ x4;(分数:2.00)A.8,6,4,1B.8,6,3,2C.8,8,4,1D.8,6,4,235.下列叙述中,不属于测试的特征的是(分数:2.00)A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性D.测试的经济性二、填空题(总题数:13,分数:30.00)36.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 【1】 和选择排序等。(分数:2.00)填空项 1:_37.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 【2】 。(分数:2.00)填空项 1:_38. 【3】 是
3、一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。(分数:2.00)填空项 1:_39.为了便于对照检查,测试用例应由输入数据和预期的 【4】 两部分组成。(分数:2.00)填空项 1:_40. 【5】 是从二维表列的方向进行的运算。(分数:2.00)填空项 1:_41.内联函数是通过 【6】 来实现的,因此内联函数是真正的函数。(分数:2.00)填空项 1:_42.以下程序的输出结果是 【7】 。#includeiostreamhvoid main1int a=0;a+=(a=8);cout a;(分数:2.00)填空项 1:_43.以下程序的执行结果为 【8】 。#include
4、iostreamusing namespace std;class basepublic:virtual void who1cout “base class“ end1;class derivel:public basepublic:void who2cout “derivel class“ end1;class derive2:public basepublic:void who3cout “derive2 class“ end1;void main4base obj1,* p;derivel obi2;derive2 obj3;p=i+)switch(stri)case1:x4+;case
5、2:x3+;case3:x2+;case4:x1+;cout x1 “,“ x2 “,“ x3 “,“ x4;(分数:2.00)A.8,6,4,1B.8,6,3,2C.8,8,4,1D.8,6,4,2 解析:【命题目的】for 和 switch 语句的应用。【解题要点】本题考查循环的嵌套。只要注意在 c+语言中,系统在字符指针的最后位置会增加一个字符串结束符/0,执行 8 次 for 循环,再根据 switch 语句中的条件易知答案。【考点链接】C+中各种条件判断,循环语句的用法。35.下列叙述中,不属于测试的特征的是(分数:2.00)A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性 D
6、.测试的经济性解析:【命题目的】本题考查了软件测试的主要特征。【解题要点】软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有 3 个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中没有测试的可靠性这一说法。【考点链接】软件测试与软件调试的概念,以及相应的方法。二、填空题(总题数:13,分数:30.00)36.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 【1】 和选择排序等。(分数:2.00)填空项 1:_ (正确答案:【1】交换排序)解析:【命题目的】需要考生记住常见的排序方法。【解题要点】常见的排序方法有插入
7、排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选择排序(包括简单选择排序和堆排序等)。【考点链接】常见的排序方法及其作用机制和区别。37.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 【2】 。(分数:2.00)填空项 1:_ (正确答案:【2】上溢)解析:【命题目的】本题考查了队列的基本性质。【解题要点】入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即 rear=rear+1),并当 lear=m+1 时置 rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空
8、(s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢”。38. 【3】 是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。(分数:2.00)填空项 1:_ (正确答案:【3】封装)解析:【命题目的】本题考查了面向对象技术中的一些基本概念。【解题要点】面向对象技术中包括以下几个基本概念,即对象、类、方法、消息、继承和封装,其中封装是一种信息隐蔽技术,目的在于将对象的使用者对象的和设计者分开。39.为了便于对照检查,测试用例应由输入数据和预期的 【4】 两部分组成。(分数:2.00)填空项 1:_ (正确答案:【4】输出结果)解析:【命题目的】本
9、题主要考查测试的步骤。【考点链接】测试的基本方法和步骤。40. 【5】 是从二维表列的方向进行的运算。(分数:2.00)填空项 1:_ (正确答案:【5】关系运算)解析:【命题目的】本题考查了关系运算的基本知识。【解题要点】在关系模型的数据语言中,一般除了运用常规的集合运算,(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等。前者是将关系 (即二维表)看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行的运算。两者统称为关系代数。41.内联函数是通过 【6】 来实现的,因此内联函数是真正的函数。(分数:2.00)填空项 1:
10、_ (正确答案:【6】编译器)解析:【命题目的】考查内联函数的基本概念【解题要点】内联函数是通过编译器,只是在调用的时候,像宏一样展开。【考点链接】内联函数比普通函数的效率更高。42.以下程序的输出结果是 【7】 。#includeiostreamhvoid main1int a=0;a+=(a=8);cout a;(分数:2.00)填空项 1:_ (正确答案:【7】16)解析:【命题目的】考查 C+赋值表达式的运用。【解题要点】赋值表达式的值就是所赋值变量的值,本题中 a+=8 相当于 a=a+8,对表达式逐步进行求解:a+=(a=8)此时,a 的值由于赋值为 8,而不是 0a+=8a=a+
11、8a=16【考点链接】要掌握“+ =”等相关运算符的用法。43.以下程序的执行结果为 【8】 。#includeiostreamusing namespace std;class basepublic:virtual void who1cout “base class“ end1;class derivel:public basepublic:void who2cout “derivel class“ end1;class derive2:public basepublic:void who3cout “derive2 class“ end1;void main4base obj1,* p;d
12、erivel obi2;derive2 obj3;p=&obj1;p-who5;p=&obj2;p-who6;p=&obj3;p-who7;(分数:2.00)填空项 1:_ (正确答案:【8】base classderivel classderive2 class)解析:【命题目的】考查虚函数的用法。【解题要点】类 base 含有虚函数 who-|_|-,该类派生出 derivel 类和 derive2 类,两个派生类中都有虚函数 who-|_|-的定义。在 main-|_|-函数中定义了一个指向 base 类的指针,它也被允许指向其派生类。在执行过程中,不断改变它所指的对象,当 p-who-
13、|_|-时就能调用不同的版本。这是因为使用了虚函数,因而进行动态联编。【考点链接】应掌握静态联编的使用方法。44.如果类中的一个成员函数的定义实现在类内,则该函数系统自动默认为该类的 【9】 函数。(分数:2.00)填空项 1:_ (正确答案:【9】内联)解析:【命题目的】注意内联函数与宏定义的区别。【解题要点】C+中的成员函数如果它的实现写在了类中,那么该函数就是一个内联函数。【考点链接】C+中内联函数的相关概念。45.为解决在多重继承环境中因公共基类带来的 【10】 问题,C+语言提供了虚基类机制。(分数:2.00)填空项 1:_ (正确答案:【10】二义性)解析:【命题目的】关于 C+中
14、虚基类的作用。【解题要点】C+中产生虚基类的作用就是为了解决继承中的二义性问题,通过虚基类继承可以把父基类中相同的函数只编译一次。46.operator 是运算符重载时必须使用的关键字,它和被重载的运算符连在一起,作为运算符函数的专用函数名,务必把该函数说明为 【11】 的。(分数:2.00)填空项 1:_ (正确答案:【11】public)解析:【命题目的】考查 c+中运算符重载的固定格式和要求。【解题要点】C+中不论用成员函数还是友元函数重载运算符都必须用关键字 operator,都必须将函数声明为公有的。【考点链接】operator 是关键字。47. 【12】 是一系列相关函数的模型或样
15、板,这些函数的 【13】 形式相同,只是所针对的 【14】 不同。(分数:6.00)填空项 1:_ (正确答案:【12】函数模板【13】源代码【14】数据类型)解析:【命题目的】C+中函数模板的定义。【解题要点】函数模板是一系列相关函数的模型或样板,这些函数的源代码形式相同,只是所针对的数据类型不问。【考点链接】声明一个函数的模板格式是:template 模板形参表声明 函数声明48.我们通常用到的 cin ,是属于 【15】 输入。(分数:2.00)填空项 1:_ (正确答案:【15】有格式)解析:【命题目的】考查关于输入输出的概念。【解题要点】C+中运算符“ ”和“ ”都是属于有格式的输入输出。【考点链接】使用 cin,cout 进行输入输出时应包括头文件“iostreamh。