1、二级 C+-13-1 及答案解析(总分:82.50,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:60.50)1.针对数组定义 int data10;,下列表述中错误的是 A.用*data 可访问到数组的首元素 B.用 data9可访问到数组的末元素 C.用 data10访问数组元素会超出数组边界 D.data 共有 10 个元素,其首元素是 data1 (分数:1.00)A.B.C.D.2.“商品”与“顾客”两个实体集之间联系一般是U /U。 A. 一对一 B. 多对多 C. 一对多 D. 多对一(分数:2.00)A.B.C.D.3.在 C 语言中,引用数组元素时,其数组下标的
2、数据类型允许是_。 A.整型表达式 B.整型常量 C.整型常量或整型表达式 D.任何类型的表达式(分数:2.50)A.B.C.D.4.如果表达式 x * yz 中,“*”是作为友元函数重载的,“”是作为成员函数重载的,则该表达式还可为 A. operator(operator * (x, y) ,Z) B. x. operator(operator * (x, y) ,z) C. y. operator * (operator(x, y) ,z) D. x. operator(operator * (x, y) )(分数:2.00)A.B.C.D.5.下列的方法中,不属于软件调试技术的是U /
3、U。 A. 强行排错法 B. 集成测试法 C. 回溯法 D. 原因排除法(分数:2.00)A.B.C.D.6.为了提高测试的效率,应该 A.随机选取测试数据 B.取一切可能的输入数据作为测试数据 C.在完成编码以后制定软件的测试计划 D.集中对付那些错误群集的程序 (分数:1.00)A.B.C.D.7.下列语句中,错误的是 A. const int buffei=256; B. const double*point; C. int const buffer=256; D. double*const point:;(分数:2.00)A.B.C.D.8.如果一个类至少有一个纯虚函数,那么就称该类为
4、U /U。 A. 抽象类 B. 虚基类 C. 派生类 D. 以上三者都不对(分数:2.00)A.B.C.D.9.下列关于类和对象的叙述中,错误的是_ 。 A. 一个类只能有一个对象 B. 对象是类的具体实例 C. 类是对某一类对象的抽象 D. 类和对象的关系是一种数据类型与变量的关系(分数:2.00)A.B.C.D.10.Windows 环境下,由 C+源程序文件编译而成的目标文件的扩展名是U /U。 A. cpp B. exe C. obj D. lik(分数:2.00)A.B.C.D.11.在重载一个运算符为成员函数时,其参数表中没有任何参数,这说明该运算符是 A. 后缀一元运算符 B.
5、前缀一元运算符 C. 无操作数的运算符 D. 二元运算符(分数:2.00)A.B.C.D.12.以下过程设计工具不属于图形工具的是U /U。 A. 程序流程图 B. PAD C. HIPO D. PDL(分数:1.00)A.B.C.D.13.下面类的定义,有U /U处错误。class MyClasspublic:void MyClass();MyClass(int value);private:int i0; A.1 B.2 C.3 D.4(分数:2.00)A.B.C.D.14.已知有定义const int D=5;int i=1;double f=032;char c=15;则下列选项错误的
6、是 A. +i; B. D-; C. c+; D. -f(分数:1.00)A.B.C.D.15.以下程序的输出结果是 _。#includeiostream.hvoid main()char w10=“ABC“, “DEFGH“,“IJKL“,“MNOP“ k;for(k=1;k3;k+)coutwk“ “; A. ABC FGH KL B. ABC EFG IJ U C. EFG JK 0 D. DEFGH IJKL(分数:2.00)A.B.C.D.16.有如下程序#include iostreamusing namespace std;class Apublic:virtual void f
7、unc1 () cout“A1“; void func2() cout“A2“; ;class B: public Apublic:void func l() cout“B1“; void func2() cout“B2“; ;int main() A *p=new B;p-func1();p-func2();return 0;运行此程序,屏幕上将显示输出U /U。 A.B1B2 B.A1A2 C.B1A2 D.A1B2(分数:2.00)A.B.C.D.17.数据库系统的核心是_。 A. 数据库 B. 数据库管理系统 C. 数据模型 D. 软件工具(分数:2.00)A.B.C.D.18.类的析
8、构函数的作用是 _。 A. 一般成员函数 B. 类的初始化 C. 对象的初始化 D. 删除对象创建的所有对象(分数:2.00)A.B.C.D.19.假定 int 类型变量占用两个字节,其有定义 int x10 0,2,4;,则数组 x 在内存中所占字节数是 A. 3 B. 6 C. 10 D. 20(分数:2.00)A.B.C.D.20.下列对变量的引用中,错误的是U /U。 A. int a; int int a;int fun ();int main ()extern int a;int b;a = 100;b = fun();coutbend1;return 0;int fun)exte
9、rn int a;return (10*a ;其程序运行后的输出结果是 A. 100 B. 10 C. 1000 D. 10000(分数:2.00)A.B.C.D.22.对于下列语句,正确的判断是for(x0,y=O;(y! 123)class Apublic:A() A(int i)x1=i;void dispa0cout“x1=“x1“,“;private:int x1;class B: public Apublic:B() B(int i):A(i+10) x2=i;void dispb()dispa();cout“x2=“x2endl;private:int x2;int main()
10、B b(2);b.dispb();return 0;程序运行后的输出结果是( )。 A.x1=10,x2=2 B.x1=12,x2=10 C.x1=12,x2=2 D.x1=2,x2=2(分数:2.00)A.B.C.D.24.下列叙述中正确的是_。 A.软件测试应该由程序开发者来完成 B.程序经调试后一般不需要再测试 C.软件维护只包括对程序代码的维护 D.以上三种说法都不对(分数:1.00)A.B.C.D.25.下面程序的结果为#include“iostreamh“void change(int a,int b)int temp;temp=a;a = b;b=temp;void main()
11、int m,n;m=8;n=9;change(m,n);coutm “ “ n endl; A.8 9 B.9 8 C.程序有错误 D.9 9(分数:1.00)A.B.C.D.26.己知类 X 是类 Y 的友元,类 Y 是类 Z 的友元,则 _。 A. 类 X 一定是类 Z 的友元 B. 类 Z 一定是类 X 的友元 C. 类 Z 的成员函数可以访问类 Y 的对象的任何成员 D. 类 K 的成员函数可以访问类 Y 的对象的任何成员(分数:2.00)A.B.C.D.27.已知 outfile 是一个输出流对象,要想像 outfile 的文件指针定位到当前位置之前 321 字节处,正确的函数调用语
12、句是 A. outfile.seekp(321,ios_base:cur); B. outfile.seekp(321,ios_base:beg); C. outfile.seekp(-321,ios_base:beg); D. outfile.seekp(-321,ios_base:cur);(分数:2.00)A.B.C.D.28.使用白盒测试法时,确定测试数据应该根据U /U和指定的覆盖标准。 A.程序的内部逻辑 B.程序的复杂结构 C.使用说明书 D.程序的功能(分数:2.00)A.B.C.D.29.考虑下面的函数原型:void f(int a,int b=7,char c=);下面的函
13、数调用中,不合法的是U /U。 A.f(5) B.f(5,8) C.f(6, int n: . fun (s): . return 0; (分数:2.00)填空项 1:_45.注释一般分为序言性注释和 1 注释。(分数:2.00)填空项 1:_46.C+语言的基本控制结构为顺序结构、选择结构和U U /U /U。(分数:1.00)填空项 1:_47.设 i,j,k 均为 int 型变量,则执行完 for(i=0,j=10;i=j; i+,j-)k=i+j;语句后,k 的值为U U /U /U。(分数:1.00)填空项 1:_48.请将下列类定义补充完整。 class Basepublic:vo
14、id fun()cout“Base:fun“end;; class Derived:public Base public: void fun() UU /U/U/显式调用基类的 fun函数 cout“Derived:fun“endl; ;(分数:1.00)填空项 1:_49.数据模型按不同应用层次分成 3 种类型,它们是概念数据模型、U U /U /U和物理数据模型。(分数:1.00)填空项 1:_50.与成员访问表达式 p-name 等价的表达式是_。(分数:2.00)填空项 1:_二级 C+-13-1 答案解析(总分:82.50,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:
15、60.50)1.针对数组定义 int data10;,下列表述中错误的是 A.用*data 可访问到数组的首元素 B.用 data9可访问到数组的末元素 C.用 data10访问数组元素会超出数组边界 D.data 共有 10 个元素,其首元素是 data1 (分数:1.00)A.B.C.D. 解析:2.“商品”与“顾客”两个实体集之间联系一般是U /U。 A. 一对一 B. 多对多 C. 一对多 D. 多对一(分数:2.00)A.B. C.D.解析:解析 对于“商品”和“顾客”两个实体集来说,一种商品可被多个顾客来购买,而一个顾客也可以购买多种商品。因此,两者的联系属于多对多的联系。3.在
16、C 语言中,引用数组元素时,其数组下标的数据类型允许是_。 A.整型表达式 B.整型常量 C.整型常量或整型表达式 D.任何类型的表达式(分数:2.50)A.B.C. D.解析:解析 在 C 语言中,引用数组元素时,其数组下标的数据类型可以是整型常量,也可以是整型表达式。4.如果表达式 x * yz 中,“*”是作为友元函数重载的,“”是作为成员函数重载的,则该表达式还可为 A. operator(operator * (x, y) ,Z) B. x. operator(operator * (x, y) ,z) C. y. operator * (operator(x, y) ,z) D.
17、x. operator(operator * (x, y) )(分数:2.00)A. B.C.D.解析:解析 C中用成员函数重载 x * y 为:x. operator * (y) ,用友元函数重载 x * y 为:operator * (x, y) ,用成员函数重载 xy 为:x. operator(y) ,用友元函数重载 xy 为:operator(x, y) 。5.下列的方法中,不属于软件调试技术的是U /U。 A. 强行排错法 B. 集成测试法 C. 回溯法 D. 原因排除法(分数:2.00)A.B. C.D.解析:解析 调试的关键在于推断程序内部的错误位置及原因。主要的凋试方法有强行
18、排错法、回溯法和原因排除法。6.为了提高测试的效率,应该 A.随机选取测试数据 B.取一切可能的输入数据作为测试数据 C.在完成编码以后制定软件的测试计划 D.集中对付那些错误群集的程序 (分数:1.00)A.B.C.D. 解析:解析:测试的目的是发现软件中的错误。经验表明,程序中存在错误的概率与该程序中已发现的错误数成正比。这一现象说明,为了提高测试效率,测试人员应该集中对付那些错误群集的程序。7.下列语句中,错误的是 A. const int buffei=256; B. const double*point; C. int const buffer=256; D. double*cons
19、t point:;(分数:2.00)A.B. C.D.解析:解析 定义常变量的一般形式为: const 类型名变量名=初始值 定义常指针的一般形式为: const 类型名*变量名=初始值 或者为: 类型名*const 变量名=初始值8.如果一个类至少有一个纯虚函数,那么就称该类为U /U。 A. 抽象类 B. 虚基类 C. 派生类 D. 以上三者都不对(分数:2.00)A. B.C.D.解析:解析 抽象类至少含有一个纯虚函数。9.下列关于类和对象的叙述中,错误的是_ 。 A. 一个类只能有一个对象 B. 对象是类的具体实例 C. 类是对某一类对象的抽象 D. 类和对象的关系是一种数据类型与变量
20、的关系(分数:2.00)A. B.C.D.解析:解析 类可以有多个对象。10.Windows 环境下,由 C+源程序文件编译而成的目标文件的扩展名是U /U。 A. cpp B. exe C. obj D. lik(分数:2.00)A.B.C. D.解析:解析 在 VC6.0 集成开发环境下,用户可以使用编译(compile)命令将一个.cpp 为扩展名的 C+源程序文件转换成一个以.obj 为扩展名的目标文件。11.在重载一个运算符为成员函数时,其参数表中没有任何参数,这说明该运算符是 A. 后缀一元运算符 B. 前缀一元运算符 C. 无操作数的运算符 D. 二元运算符(分数:2.00)A.
21、B. C.D.解析:解析 在成员函数重载中,一元函数重载在函数声明中可以没有任何形参,操作数就是对象本身;但是作为后缀运算符重载时,则必须在形参中添加参数。12.以下过程设计工具不属于图形工具的是U /U。 A. 程序流程图 B. PAD C. HIPO D. PDL(分数:1.00)A.B.C.D. 解析:解析 常用的过程设计工具有图形工具、表格工具和语言工具,其中图形工具包括:程序流程图、N-S、PAD、HIPO:表格工具有判定表:语言工具有 PDL(伪码)。13.下面类的定义,有U /U处错误。class MyClasspublic:void MyClass();MyClass(int
22、value);private:int i0; A.1 B.2 C.3 D.4(分数:2.00)A.B.C. D.解析:解析 上述类的定义共有 3 处错误。(1) 类的成员变量不能在定义时进行初始化;(2) 类的:构造函数不能有返回值(包括 void 类型);(3) 类的析构函数不能有参数。14.已知有定义const int D=5;int i=1;double f=032;char c=15;则下列选项错误的是 A. +i; B. D-; C. c+; D. -f(分数:1.00)A.B. C.D.解析:解析 “+”,“-”运算符不能用于常量。15.以下程序的输出结果是 _。#includei
23、ostream.hvoid main()char w10=“ABC“, “DEFGH“,“IJKL“,“MNOP“ k;for(k=1;k3;k+)coutwk“ “; A. ABC FGH KL B. ABC EFG IJ U C. EFG JK 0 D. DEFGH IJKL(分数:2.00)A.B.C.D. 解析:16.有如下程序#include iostreamusing namespace std;class Apublic:virtual void func1 () cout“A1“; void func2() cout“A2“; ;class B: public Apublic:
24、void func l() cout“B1“; void func2() cout“B2“; ;int main() A *p=new B;p-func1();p-func2();return 0;运行此程序,屏幕上将显示输出U /U。 A.B1B2 B.A1A2 C.B1A2 D.A1B2(分数:2.00)A.B.C. D.解析:17.数据库系统的核心是_。 A. 数据库 B. 数据库管理系统 C. 数据模型 D. 软件工具(分数:2.00)A.B. C.D.解析:解析 数据库管理系统是数据库系统的核心。18.类的析构函数的作用是 _。 A. 一般成员函数 B. 类的初始化 C. 对象的初始
25、化 D. 删除对象创建的所有对象(分数:2.00)A.B.C.D. 解析:19.假定 int 类型变量占用两个字节,其有定义 int x10 0,2,4;,则数组 x 在内存中所占字节数是 A. 3 B. 6 C. 10 D. 20(分数:2.00)A.B.C.D. 解析:解析 x 数组共有 10 个元素,在花括号内只提供 3 个初值,这表示只给前面的 3 个成员赋值,后7 个元素的值为 0,所以,一共有 20 个字节。20.下列对变量的引用中,错误的是U /U。 A. int a; int int a;int fun ();int main ()extern int a;int b;a =
26、100;b = fun();coutbend1;return 0;int fun)extern int a;return (10*a ;其程序运行后的输出结果是 A. 100 B. 10 C. 1000 D. 10000(分数:2.00)A.B.C. D.解析:解析 本题考核变量的作用域、生存周期和存储类别(自动、静态、存储器,外部)。先来了解外部变量:外部变量用关键字 extern 表示。由于外部变量可以被程序中的所有函数共同访问,其作用域为全局,因此也称为全局变量。对于外部变量而言,“定义变量”和“说明变量”是两个不同的概念。定义a 为外部变量是告诉编译程序, a 是一个外部变量,并要求系
27、统为 a 分配一个固定的永久存储空间。a 的值在整个程序的运行期间都存在,只有当定义它的程序运行结束时,它的存储空间才释放。外部变量定义后,当程序中的函数要引用外部变量时,应在函数中作引用说明。在此程序中,在第二行定义了一个外部变量 a,主函数 main 给外部变量赋的初始值为 100,当调用函数 fun()时,外部变量 a 的值传到函数 fun()中,因此函数所返回的值为 100*10=1000。22.对于下列语句,正确的判断是for(x0,y=O;(y! 123)class Apublic:A() A(int i)x1=i;void dispa0cout“x1=“x1“,“;private
28、:int x1;class B: public Apublic:B() B(int i):A(i+10) x2=i;void dispb()dispa();cout“x2=“x2endl;private:int x2;int main()B b(2);b.dispb();return 0;程序运行后的输出结果是( )。 A.x1=10,x2=2 B.x1=12,x2=10 C.x1=12,x2=2 D.x1=2,x2=2(分数:2.00)A.B.C. D.解析:24.下列叙述中正确的是_。 A.软件测试应该由程序开发者来完成 B.程序经调试后一般不需要再测试 C.软件维护只包括对程序代码的维护
29、 D.以上三种说法都不对(分数:1.00)A.B.C.D. 解析:解析 程序调试就是诊断和改正程序中的错误,由程序开发者完成。软件测试是为了发现错误而执行程序的过程,它由专门的测试人员完成。软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。25.下面程序的结果为#include“iostreamh“void change(int a,int b)int temp;temp=a;a = b;b=temp;void main()int m,n;m=8;n=9;change(m,n);coutm “ “ n endl; A.8 9 B.
30、9 8 C.程序有错误 D.9 9(分数:1.00)A. B.C.D.解析:解析 考查交换两整数的方法。 解题要点 两数只在函数 change 内被使用,函数调用完后该内存被释放,因此没有交换两数。 考点链接 交换两个数的方法简单说有两种一是使用指针,二是用引用。26.己知类 X 是类 Y 的友元,类 Y 是类 Z 的友元,则 _。 A. 类 X 一定是类 Z 的友元 B. 类 Z 一定是类 X 的友元 C. 类 Z 的成员函数可以访问类 Y 的对象的任何成员 D. 类 K 的成员函数可以访问类 Y 的对象的任何成员(分数:2.00)A.B.C.D. 解析:27.已知 outfile 是一个输
31、出流对象,要想像 outfile 的文件指针定位到当前位置之前 321 字节处,正确的函数调用语句是 A. outfile.seekp(321,ios_base:cur); B. outfile.seekp(321,ios_base:beg); C. outfile.seekp(-321,ios_base:beg); D. outfile.seekp(-321,ios_base:cur);(分数:2.00)A.B.C.D. 解析:解析 本题考核文件 I/O 操作中文件流的定位。函数 seekp 用于将输出流定位于绝对位置 pos,函数返回流对象本身的引用。ios_base:cur 相对于当前位
32、置(负数表示当前位置之前)。由此可知只有选项 D 符合题目要求28.使用白盒测试法时,确定测试数据应该根据U /U和指定的覆盖标准。 A.程序的内部逻辑 B.程序的复杂结构 C.使用说明书 D.程序的功能(分数:2.00)A. B.C.D.解析:解析 白盒测试是把测试对象看成一个打开的盒子,允许测试人员利用程序内部的逻辑结构及相关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试。所以,白盒测试的对象基本上是源程序,以程序的内部逻辑和指定的覆盖标准测试数据。29.考虑下面的函数原型:void f(int a,int b=7,char c=);下面的函数调用中,不合法的是U /U。 A.f(
33、5) B.f(5,8) C.f(6, int n: . fun (s): . return 0; (分数:2.00)填空项 1:_ (正确答案:void fun(b22))解析:解析 此题考核的知识点是函数的定义形式与数组名作为函数的参数。函数头的定义形式是“存储类型说明符数据类型说明符函数名(形参列表)”,此题没有涉及到函数的存储类别。如果函数的参数是数组,其第 1 维的长度可以省略,因此本题的函数首部可以写成:void fun(b22)。45.注释一般分为序言性注释和 1 注释。(分数:2.00)填空项 1:_ (正确答案:功能性)解析:解析 注释一般分为序言性注释和功能性注释。序言性注释
34、通常位于每个程序的开头部分,给出程序的整体说明;功能性注释的位置一般嵌在源程序体之中,主要描述其后的语句或程序做什么。46.C+语言的基本控制结构为顺序结构、选择结构和U U /U /U。(分数:1.00)填空项 1:_ (正确答案:循环结构)解析:解析 c+语言基本结构。 解题要点 C+语言 3 种基本结构就是顺序结构,选择结构,循环结构。47.设 i,j,k 均为 int 型变量,则执行完 for(i=0,j=10;i=j; i+,j-)k=i+j;语句后,k 的值为U U /U /U。(分数:1.00)填空项 1:_ (正确答案:10)解析:解析 该 for 语句以 i 为 0、j 为
35、10 初始化,循环条件是 i=j 每次循环后 i 增 1、j 减 1,循环体是将 i 与 j 的和赋给 k。这样变量 k 将保存的是最后一次赋给它的值。一次循环后 i 为 1、j 为 9,二次循环后 i 为 2、j 为 8,五次循环后 i 为 5、j 为 5,继续第六次循环,将 i 与 j 的和 10 存于 k 后,i 为 6、j 为 4,结束循环。所以循环执行后 k 为 10。48.请将下列类定义补充完整。 class Basepublic:void fun()cout“Base:fun“end;; class Derived:public Base public: void fun() U
36、U /U/U/显式调用基类的 fun函数 cout“Derived:fun“endl; ;(分数:1.00)填空项 1:_ (正确答案:Base:fun();)解析:解析 类层次中的访问规则。49.数据模型按不同应用层次分成 3 种类型,它们是概念数据模型、U U /U /U和物理数据模型。(分数:1.00)填空项 1:_ (正确答案:逻辑数据模型)解析:解析 数据是现实世界符号的抽象,而数据模型 (data model)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成 3 种类型,它们是概念数据模型(conceptual data model)、逻辑数据模型 (logic data model)、物理数据模型(physical data model)。50.与成员访问表达式 p-name 等价的表达式是_。(分数:2.00)填空项 1:_ (正确答案:(*p).name)解析:解析 本题考核对象指针的定义与使用。一个基类型为类类型的指针称为对象指针。对于指向对象的指针,下面两种表示方式是等价的: 对象指针名-成员名; (*对象指针名)成员名;