1、二级 C+笔试-399 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:35,分数:62.00)1.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和( )。A编码设计 B测试阶段C运行阶段 D物理设计(分数:2.00)A.B.C.D.2.下列叙述中错误的是( )。A) 一种数据的逻辑结构可以有多种存储结构B) 数据的存储结构与数据的处理效率无关C) 数据的存储结构与数据的处理效率密切相关D) 数据的存储结构在计算机中所占的空间不一定是连续的(分数:2.00)A.B.C.D.3.下列说法中错误的是( )。A公有继承时基类中的 public 成员在派生类中仍是 pub
2、lic 成员B私有继承时基类中的 protected 成员在派生类中仍是 protected 成员C私有继承时基类中的 public 成员在派生类中是 private 成员D保护继承时基类中的 public 成员在派生类中是 protected 成员(分数:2.00)A.B.C.D.4.下面关于运算符重载的描述错误的是A)运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构B)不是所有的运算符都可以进行重载C)运算符函数的调用必须使用关键字 operatorD)在 C+语言中不可通过运算符重载创造出新的运算符(分数:1.00)A.B.C.D.5.以下 for 语句中
3、不是死循环的是A) for(int i0;i1;+i); B) for(int i0;+i);C) for(int i1;i0;+i); D) for(;);(分数:2.00)A.B.C.D.6.有如下程序:#includeiostreamusing namespace std;class DAint k;public:DA(int x1):k(x)DA()coutk;int main()DAdDA(3),DA(3),DA(3);DA*pnew DA2;deletep;return();这个程序的输出结果是( )。A111 B333C11333 D11133(分数:2.00)A.B.C.D.7
4、.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是A) 派生类的对象可以赋给基类的对象B) 派生类的对象可以初始化基类的引用C) 派生类的对象可以直接访问基类中的成员D) 派生类的对象的地址可以赋给指向基类的指针(分数:2.00)A.B.C.D.8.关于 new 运算符的下列描述中,错误的是( )。A用来动态创建对象和对象数组B用它创建的对象和对象数组可以使用运算符 delete 删除C创建对象时要调用构造函数D它创建对象数组时必须制定初始值(分数:2.00)A.B.C.D.9.下列函数的功能是判断字符串 str 是否对称,对称则返回 true,否则返回 false,则横线
5、处应填上( )。Bool fun(char*str)int i=0,j=0;while(strj)j+;for(j-;iji+,j-);return i_j;A) = B) | C) else if(n= =1) return 2;else return fib(n-1)+fib(n-2);若执行函数调用表达式 fib(2),函数 fib 被调用的次数是A) 1 B) 2 C) 3 D) 4(分数:2.00)A.B.C.D.20.关于对象概念的描述中,_ 是错误的。A) 对象就是 C 语言中的机构变量B) 对象是状态和操作的封装体C) 对象之间的信息传递是通过消息进行的D) 对象是某个类的一个
6、实例(分数:2.00)A.B.C.D.21.下列虚基类的声明中,正确的是( )。A) class virtualB:public AB) virtual classB:public AC) class B:public A virtualD) class B:virtual public A(分数:1.00)A.B.C.D.22.下列叙述中正确的是A) 软件就是程序清单 B) 软件就是存放在计算机中的文件C) 软件应包括程序清单以及运行结果 D) 软件包括程序和文档(分数:2.00)A.B.C.D.23.语句 ofstream f(“SALARYDAT“,ios_base:app);的功能是建
7、立流对象 f,并试图打开文件SALARY.DAT 与 f 关联,而且A) 若文件存在,将其置为空文件;若文件不存在,打开失败B) 若文件存在,将文件指针定位于文件尾:若文件不存在,建立一个新文件C) 若文件存在,将文件指针定位于文件首;若文件不存在,打开失败D) 若文件存在,打开失败;若文件不存在,建立一个新文件(分数:1.00)A.B.C.D.24.在面向对象的程序设计中,下列叙述中错误的是( )。A任何一个对象构成一个独立的模块B一个对象不是独立存在的实体,各个对象之间有关联,相互依赖C下一层次的对象可以继承上一层次对象的某些属性D上述三种说法都正确(分数:2.00)A.B.C.D.25.
8、以下不属于对象的基本特点的是( )。A分类性 B多态性C继承性 D封装性(分数:2.00)A.B.C.D.26.下面程序的运行结果是( )。#includeiostreamusing namespace std;class TestClassstatic int n;public:TestClass ()n+;static int test()for(int i=0;i4;i+)n+;return n;int TestClass:n=0;int main()coutTestClass:test()“ “;TestClass c1,c2;coutTestClass:test()endl;retu
9、rn ();A) 4,10 B) 4,6 C) 0,6 D) 0,4(分数:2.00)A.B.C.D.27.下列不属于 3 种基本控制结构是( )。A) 顺序 B) 选择 C) 循环 D) 调用(分数:2.00)A.B.C.D.28.如果表达式 y*x+中,“”是作为成员函数重载运算符,“+”是作为友元函数重的运算符,采用运算符函数调用格式,该表达式还可表示为( )。Ax.operator+(0)operator*(y) Bopenrator*(x.operator+(0),y)Cy.operator*(openrator+(x,0) Doperator*(operator+(x,0),y)(
10、分数:2.00)A.B.C.D.29.下面的哪个选项不能作为函数的返回类型?A)void B)int C)new D)long(分数:1.00)A.B.C.D.30.在深度为 5 的满二叉树中,叶子结点的个数为_。A) 32 B) 31 C) 16 D) 15(分数:2.00)A.B.C.D.31.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是A) DB 包含 DBS 和 DBMSB) DBMS 包含 DB 和 DBSC) DBS 包含 DB 和 DBMSD) 没有任何关系(分数:1.00)A.B.C.D.32.有如下程序段:int a10,*p3,*pp,i;for
11、(i=0;i3:i+)pi=pp=p;则正确表示数组 a 元素的表达式是 _。A) pp B) a10C) p3 D) *(*(p+2)(分数:2.00)A.B.C.D.33.有如下程序:#include iostreamusing namespace std;class Baseprivate:char c;public:Base(char n):c(n)Base()coutc;class Derived: public Baseprivate:char c;public:Derived(char n):Base(n+1),c(n)Derived()coutc;int main()Deriv
12、ed obj(x);return 0;执行上面的程序将输出( )。A. xy B. yxC. x D. y(分数:2.00)A.B.C.D.34.在整型指针变量 ptr1、ptr12 的定义中,错误的是 _。A) int x, *ptr1, ptr2;B) int*ptrl, x, *ptr2;C) int x,*ptrl=coutxiend1;(分数:2.00)填空项 1:_47.有以下程序:#include iostreamusing namespace std;class Baseprivate:int a,b;public:Base(int x, int y)a=x;b=y;void
13、Show()couta , bend1;class Derived : public Baseprivate:int c;public:Derived(int x, int y, int z) : Base(x,y),c(z) void Show()coutcend1;int main()Base b(50,50),*pb;Derived d(10,20,30);pb=pb-Show();return 0;运行后的打印结果为 【14】 (分数:1.00)填空项 1:_48.下列 for 语句的循环次数为【8】。for(int a=0,b=1;bi1;+i); B) for(int i0;+i)
14、;C) for(int i1;i0;+i); D) for(;);(分数:2.00)A. B.C.D.解析:解析 考查循环语句 for 的使用。解题要点 for 循环的一般格式为:for(初始化部分;终止条件判断部分;迭代部分)循环体;。说明如下:for 循环开始时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。错解分析 在 for 语句中,如果省略了终止条件判断部分,并且在语句中没有 break,或者是终止条件判断部分始终没有终止,都将出现死循环。考点链接 for 循环语句可由 while 循环语句来代替。6
15、.有如下程序:#includeiostreamusing namespace std;class DAint k;public:DA(int x1):k(x)DA()coutk;int main()DAdDA(3),DA(3),DA(3);DA*pnew DA2;deletep;return();这个程序的输出结果是( )。A111 B333C11333 D11133(分数:2.00)A.B. C.D.解析:解析 本题是两个循环语句和一个判断语句的嵌套。For 循环的作用是在 i 等于 10 的时候跳出循环本题的答案为 B。7.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的
16、是A) 派生类的对象可以赋给基类的对象B) 派生类的对象可以初始化基类的引用C) 派生类的对象可以直接访问基类中的成员D) 派生类的对象的地址可以赋给指向基类的指针(分数:2.00)A.B.C. D.解析:解析 公有继承的派生类和基类是子类型的关系,所谓子类型是类型间一般和特殊的关系,即派生类是基类的子类型或者说基类的操作可以被用于操作派生类的对象。8.关于 new 运算符的下列描述中,错误的是( )。A用来动态创建对象和对象数组B用它创建的对象和对象数组可以使用运算符 delete 删除C创建对象时要调用构造函数D它创建对象数组时必须制定初始值(分数:2.00)A.B.C.D. 解析:9.下
17、列函数的功能是判断字符串 str 是否对称,对称则返回 true,否则返回 false,则横线处应填上( )。Bool fun(char*str)int i=0,j=0;while(strj)j+;for(j-;iji+,j-);return i_j;A) = B) | C) else if(n= =1) return 2;else return fib(n-1)+fib(n-2);若执行函数调用表达式 fib(2),函数 fib 被调用的次数是A) 1 B) 2 C) 3 D) 4(分数:2.00)A.B.C. D.解析:解析 针对递归调用的含义,当 n 为 2 时有 fib(0),fib(
18、1),fib(2)被调用,且 fib(0),fib(1)时调用结束,即共 3 次。20.关于对象概念的描述中,_ 是错误的。A) 对象就是 C 语言中的机构变量B) 对象是状态和操作的封装体C) 对象之间的信息传递是通过消息进行的D) 对象是某个类的一个实例(分数:2.00)A. B.C.D.解析:21.下列虚基类的声明中,正确的是( )。A) class virtualB:public AB) virtual classB:public AC) class B:public A virtualD) class B:virtual public A(分数:1.00)A.B.C.D. 解析:解析
19、 虚基类说明格式如下:Virtual继承方式基类名其中,virtual 是虚基类的关键词。虚基类的说明是用在定义派生类时,写在派生类名的后面。即:class派生类名:Virtual继承方式基类名。22.下列叙述中正确的是A) 软件就是程序清单 B) 软件就是存放在计算机中的文件C) 软件应包括程序清单以及运行结果 D) 软件包括程序和文档(分数:2.00)A.B.C.D. 解析:解析 软件应包括程序和文档。23.语句 ofstream f(“SALARYDAT“,ios_base:app);的功能是建立流对象 f,并试图打开文件SALARY.DAT 与 f 关联,而且A) 若文件存在,将其置为
20、空文件;若文件不存在,打开失败B) 若文件存在,将文件指针定位于文件尾:若文件不存在,建立一个新文件C) 若文件存在,将文件指针定位于文件首;若文件不存在,打开失败D) 若文件存在,打开失败;若文件不存在,建立一个新文件(分数:1.00)A.B. C.D.解析:解析 本题考查的是文件打开模式。文件打开模式 ios_base:app 是为添加数据而打开(总是在尾部写)。因此选项 A、C、D 的说法不正确,应该选择 B。24.在面向对象的程序设计中,下列叙述中错误的是( )。A任何一个对象构成一个独立的模块B一个对象不是独立存在的实体,各个对象之间有关联,相互依赖C下一层次的对象可以继承上一层次对
21、象的某些属性D上述三种说法都正确(分数:2.00)A.B. C.D.解析:25.以下不属于对象的基本特点的是( )。A分类性 B多态性C继承性 D封装性(分数:2.00)A.B.C. D.解析:26.下面程序的运行结果是( )。#includeiostreamusing namespace std;class TestClassstatic int n;public:TestClass ()n+;static int test()for(int i=0;i4;i+)n+;return n;int TestClass:n=0;int main()coutTestClass:test()“ “;T
22、estClass c1,c2;coutTestClass:test()endl;return ();A) 4,10 B) 4,6 C) 0,6 D) 0,4(分数:2.00)A. B.C.D.解析:解析 在主函数中首先调用 TestClass 中的 test 函数输出,类中的 n 为静态数据成员,可以为所有的对象共享这些数据,这里调用后 n 等于 4。定义对象 c1,c2 调用构造函数后 n=6,所以主函数再次执行“coutTestClass:test()endl;”后,n 等于 10。27.下列不属于 3 种基本控制结构是( )。A) 顺序 B) 选择 C) 循环 D) 调用(分数:2.00
23、)A.B.C.D. 解析:解析 顺序、选择和循环是程序的三种基本控制结构。28.如果表达式 y*x+中,“”是作为成员函数重载运算符,“+”是作为友元函数重的运算符,采用运算符函数调用格式,该表达式还可表示为( )。Ax.operator+(0)operator*(y) Bopenrator*(x.operator+(0),y)Cy.operator*(openrator+(x,0) Doperator*(operator+(x,0),y)(分数:2.00)A.B.C. D.解析:29.下面的哪个选项不能作为函数的返回类型?A)void B)int C)new D)long(分数:1.00)A
24、.B.C. D.解析:解析 new 是动态申请内存空间时使用的关键宇,不能作为函数的返回类型,选项 A)为无返回值,选项 B)为返回整型,选项 D)为返回长整型。30.在深度为 5 的满二叉树中,叶子结点的个数为_。A) 32 B) 31 C) 16 D) 15(分数:2.00)A.B.C. D.解析:解析 在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第 k 层上有 2k-1个结点。叶子结点在第 5 层上,有 25-1=16 个结点。31.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是A) DB 包含 DBS 和 DBMSB) DBMS 包含 DB 和
25、DBSC) DBS 包含 DB 和 DBMSD) 没有任何关系(分数:1.00)A.B.C. D.解析:解析 数据库管理系统 DBMS 是数据库系统中实现各种数据管理功能的核心软件。它负责数据库中所有数据的存储、检索、修改以及安全保护等,数据库内的所有活动都是在其控制下进行的。所以,DBMS包含数据库 DB。操作系统、数据库管理系统与应用程序在一定的硬件支持下就构成了数据库系统。所以,DBS 包含 DBMS,也就包含 DB。综上所述,选项 C 正确。32.有如下程序段:int a10,*p3,*pp,i;for(i=0;i3:i+)pi=pp=p;则正确表示数组 a 元素的表达式是 _。A)
26、pp B) a10C) p3 D) *(*(p+2)(分数:2.00)A.B.C.D. 解析:33.有如下程序:#include iostreamusing namespace std;class Baseprivate:char c;public:Base(char n):c(n)Base()coutc;class Derived: public Baseprivate:char c;public:Derived(char n):Base(n+1),c(n)Derived()coutc;int main()Derived obj(x);return 0;执行上面的程序将输出( )。A. xy
27、 B. yxC. x D. y(分数:2.00)A. B.C.D.解析:34.在整型指针变量 ptr1、ptr12 的定义中,错误的是 _。A) int x, *ptr1, ptr2;B) int*ptrl, x, *ptr2;C) int x,*ptrl=coutxiend1;(分数:2.00)填空项 1:_ (正确答案:10)解析:47.有以下程序:#include iostreamusing namespace std;class Baseprivate:int a,b;public:Base(int x, int y)a=x;b=y;void Show()couta , bend1;c
28、lass Derived : public Baseprivate:int c;public:Derived(int x, int y, int z) : Base(x,y),c(z) void Show()coutcend1;int main()Base b(50,50),*pb;Derived d(10,20,30);pb=pb-Show();return 0;运行后的打印结果为 【14】 (分数:1.00)填空项 1:_ (正确答案:10,20)解析:解析 本题考核基类指针的使用。本题首先定义了一个基类 Base 和一个由 Base 派生出来的派生类 Derive。在主函数中,定义了一个
29、基类 Base 指针 pb 和基类对象 b,还定义了派生类 Derive 的对象d。然后将派生类对象 d 的地址赋值给指向基类 Base 的指针 pb。由于 Derive 是 Base 的子类型,因此允许上述赋值。但这时指针 pb 只能使用从基类 Base 继承的成员,即当 pb 指向 d 对象时,pb-show 还是调用基类 Base 的成员函数 show()。所以程序最后输出的对象 d 中对基类成员的初始化值,即 10,20。48.下列 for 语句的循环次数为【8】。for(int a=0,b=1;b&a5;a+);(分数:1.00)填空项 1:_ (正确答案:5)解析:解析:因为 b
30、的值为 1,所以 ba5 相当于 a5,当 a=5 时退出循环,一共进行 5 次循环。49.索引从物理上分为聚簇索引和 【5】 。(分数:2.00)填空项 1:_ (正确答案:非聚簇索引)解析:解析 根据索引的顺序与数据表的物理顺序是否相同可以分为:聚簇索引和非聚簇索引,聚簇索引重新组织表中的数据以按指定的一个或多个列的值排序;非聚簇索引不重新组织表中的数据。50.为解决在多重继承环境中因公共基类带来的 【10】 问题,c+语言提供了虚基类机制。(分数:1.00)填空项 1:_ (正确答案:二义性)解析:解析 关于 C+中虚基类的作用。解题要点 C+中产生虚基类的作用就是为了解决继承中的二义性问题,通过虚基类继承可以把父基类中相同的函数只编译一次。