1、二级 C+-7-1 及答案解析(总分:86.50,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:59.50)1.一个函数带有参数说明时,则参数的默认值应该在U /U中给出。 A.函数定义 B.函数声明 C.函数定义或声明 D.函数调用(分数:2.00)A.B.C.D.2.索引属于 A.模式 B.内模式 C.外模式 D.概念模式(分数:1.00)A.B.C.D.3.下列语句中正确的是U /U。 A. int * p;i=8; p= B. int * p,i; p= C. float * p;int i;p= D. float * p;cout* p;(分数:2.00)A.B.C.D
2、.4.在公有派生的情况下,派生类中定义的成员函数只能访问原基类的 A. 公有成员和私有成员 B. 私有成员和保护成员 C. 公有成员和保护成员 D. 私有成员、保护成员和公有成员(分数:1.00)A.B.C.D.5.下面程序的结果为U /U。#include“iostream.h“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):cout m“ “ n endl; A.89 B.98 C.程序有错误 D.99 (分数:1.00)A.B.C.D.6.在一个无向图中,
3、所有顶点的度数之和等于所有边数的U /U倍。 A. 3 B. 2 C. 1 D. 1/2(分数:2.00)A.B.C.D.7.下面关于 this 指针的说法中错误的是U /U。 A. this 指针是一种隐含指针,存在于每个类的非静态成员函数中 B. 它是成员函数所属对象的指针 C. 通过 this.成员变量的形式可以访问类中的数据成员 D. 成员函数访问类中的数据成员格式可写成:this-成员变量(分数:2.00)A.B.C.D.8.以下程序的输出结果是U /U。#includeiostream.hmain()int m=5;if(m+5)coutm;else coutm-; A.7 B.6
4、 C.5 D.4(分数:2.00)A.B.C.D.9.已知枚举类型声明语句为: enumCOLORWHITE,YELLOW,GREEN=5,RED,BLACK=10; 则下列说法中错误的是 A. 枚举常量 YELLOW 的值为 1 B. 枚举常量 RED 的值为 6 C. 枚举常量 BLACK 的值为 10 D. 枚举常量 WHITE 的值为 1(分数:2.00)A.B.C.D.10.下列叙述中正确的是_。 A.软件测试应该由程序开发者来完成 B.程序经调试后一般不需要再测试 C.软件维护只包括对程序代码的维护 D.以上三种说法都不对(分数:1.00)A.B.C.D.11.有如下程序#incl
5、udeiostream.hvoid main( )float x=2.O,y;if(xO.0)y=0.0;else if(x10.O)y=1.0/x;else y=1.0;couty;该程序的输出结果是 A. 0 B. 0.25 C. 0.5 D. 1.0(分数:1.00)A.B.C.D.12.下列关于线性链表的叙述中,正确的是U /U。 A. 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致 B. 各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续 C. 进行插入与删除时,不需要移动表中的元素 D. 以上三种说法都不对(分数:2.00)A.B.C.D.13.
6、下面程序的结果为#include“iostream.h“void change(int a,int b)int temp;tempa;ab;btemp;void main()int m,n;m8;n9;change(m,n);coutm“ “nendl; A. 8 9 B. 9 8 C. 程序有错误 D. 9 9(分数:2.00)A.B.C.D.14.在软件设计中,不属于过程设计工具的是U /U。 APDL(过程设计语言) BPAD 图 CNS图 DDFD 图(分数:2.00)A.B.C.D.15.对关系 S 和 R 进行集合运算,产生的元组属于 S 中的元组,但不属于 R 中的元组,这种集合
7、运算称为U /U。 A.并运算 B.交运算 C.差运算 D.积运算(分数:2.00)A.B.C.D.16.设 a 和 b 均为 double 型变量,且 a=55、b=25,则表达式(int)a+bb 的值是U /U。 A.6.500000 B.6 C.5.500000 D.6.000000(分数:2.00)A.B.C.D.17.有如下程序:int x =3;do x- =2;cout x; while(! (-x);执行这个程序的输出结果是U /U。 A. 1 B. 30 C. 1-2 D. 死循环(分数:1.00)A.B.C.D.18.有如下程序:#include iostream.hus
8、ing namespace std;class Demopublic:Demo()f cout“default constructor/n“;Demo(const Demo ;Demo userCode (Demo b)(Demo c(b); return c;int main()Demo a,d;cout“calling userCode()/n“;d=userCode(a);return 0;执行上面程序的过程中,构造函数 Demo()和 Demo (const Democonst A*ptr new A;则下列语句错误的是U /U。 A.ptr-a=100; B.ptr= C.ptr+;
9、 D.obj2=*ptr;(分数:2.00)A.B.C.D.30.算法分析的目的是U /U。 A. 找出数据结构的合理性 B. 找出算法中输入和输出之间的关系 C. 分析算法的易懂性和可靠性 D. 分析算法的效率以求改进(分数:2.00)A.B.C.D.31.设有如下程序:#include iostream.hclass Apublic:int i;display() cout“class A/n“;class Bpublic:int i;display() cout“class B/n“;class C:public:A, public:Bint j;public:int i;show()
10、j=i*i;display();void main()C demo;demo.show();则主程序运行时,将U /U。 A.因为变量 i 的重复定义而报错 B.因为对象 demo 间接调用 display 函数时产生歧义性而报错 C.因为类定义的语法错误而不能运行 D.没有语法错误,能够正常输出结果(分数:2.00)A.B.C.D.32.设有基类定义:class Cbase private: int a;protected: int b;public: int c;派生类采用何种继承方式可以使成员变量 b 成为自己的私有成员 A. 私有继承 B. 保护继承 C. 公有继承 D. 私有、保护、
11、公有均可(分数:2.00)A.B.C.D.33.下列 C+标点符号中表示一条预处理命令开始的是U /U。 A.# B.; C./ D.(分数:1.00)A.B.C.D.34.下列控制格式输入/输出的操作符中,能够设置浮点数精度的是_。 A.setprecision B.setw C.setfill D.showpoint(分数:2.00)A.B.C.D.35.有下列程序:#includestdio.hvoid main() FILE *pf;char *s1=“China“,*s2=“Beijing“;pf=fopen(“abc.dat“,“wb+“);fwrite(s2,7,1,pf);re
12、wind(pf); /*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);以上程序执行后 abc.dat 文件的内容是U /U。 A.China B.Chinang C.ChinaBeij ing D.BeijingChina(分数:2.00)A.B.C.D.二、B填空题/B(总题数:15,分数:27.00)36.对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用 1 的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。(分数:1.00)填空项 1:_37.虚函数必须是类的U U /U /U。(分数:2.00)填空项
13、 1:_38.在面向对象方法中,类之间共享属性和操作的机制称为 1。(分数:2.00)填空项 1:_39.在 MyClass 类的定义中,对赋值运算符“=”进行重载。请将画线处缺失的部分补充完整。 _MyClass:operator=(const MyClass for(i=1;i6;i+)if(i=3)break; cout“i=“iendl; (分数:2.00)填空项 1:_44.假定用户没有给一个名为 MyClass 的类定义析构函数,则系统为其定义的默认析构函数首部形式为UU /U /U。(分数:2.00)填空项 1:_45.算法复杂度主要包括时间复杂度和U U /U /U复杂度。(分
14、数:2.00)填空项 1:_46.类的静态成员的定义说明语句不能出现在类的外部,而且只能定义U U /U /U次。(分数:2.00)填空项 1:_47.在 C+中封装性、继承性和U U /U /U是面向对象思想的主要特征。(分数:2.00)填空项 1:_48.用树型结构表示实体类型及实体间联系的数据模型称为U U /U /U。(分数:1.00)填空项 1:_49.下面程序的运行结果为 【10】 。 # include iostreamh void fun(int x=0,int y=0) cout X y; void main( ) fun(5); (分数:1.00)填空项 1:_50.在有序
15、表(1,3,5,7,9,11,13)中二分查找关键字 9 时所需进行的关键字比较次数为 U U /U /U。(分数:2.00)填空项 1:_二级 C+-7-1 答案解析(总分:86.50,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:59.50)1.一个函数带有参数说明时,则参数的默认值应该在U /U中给出。 A.函数定义 B.函数声明 C.函数定义或声明 D.函数调用(分数:2.00)A.B.C. D.解析:2.索引属于 A.模式 B.内模式 C.外模式 D.概念模式(分数:1.00)A.B. C.D.解析:解析 内模式(Internal Schema)又称物理模式(Physi
16、cal Schema),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及 hash 等存取方式与存取路径。3.下列语句中正确的是U /U。 A. int * p;i=8; p= B. int * p,i; p= C. float * p;int i;p= D. float * p;cout* p;(分数:2.00)A.B. C.D.解析:解析 选项 A 中的变量 i 没有定义就使用了;选项 C(float)i 把 i 中的数据取出后变为 float 型,就是一个数值,“b=temp:void main()int m,n;m=8;n=9;change(m,n):cou
17、t m“ “ n endl; A.89 B.98 C.程序有错误 D.99 (分数:1.00)A. B.C.D.解析:6.在一个无向图中,所有顶点的度数之和等于所有边数的U /U倍。 A. 3 B. 2 C. 1 D. 1/2(分数:2.00)A.B. C.D.解析:解析 在一个无向图中,所有顶点的度数之和等于所有边数的 2 倍。7.下面关于 this 指针的说法中错误的是U /U。 A. this 指针是一种隐含指针,存在于每个类的非静态成员函数中 B. 它是成员函数所属对象的指针 C. 通过 this.成员变量的形式可以访问类中的数据成员 D. 成员函数访问类中的数据成员格式可写成:thi
18、s-成员变量(分数:2.00)A.B.C. D.解析:解析 this 指针是一个隐含指针,它隐含于每个类的非静态成员函数中。this 指针是成员函数所属的对象指针,它指向当前类的对象地址。通过 this 指针访问当前对象成员有两种方式:(*this).成员,this-成员。8.以下程序的输出结果是U /U。#includeiostream.hmain()int m=5;if(m+5)coutm;else coutm-; A.7 B.6 C.5 D.4(分数:2.00)A.B. C.D.解析:9.已知枚举类型声明语句为: enumCOLORWHITE,YELLOW,GREEN=5,RED,BLA
19、CK=10; 则下列说法中错误的是 A. 枚举常量 YELLOW 的值为 1 B. 枚举常量 RED 的值为 6 C. 枚举常量 BLACK 的值为 10 D. 枚举常量 WHITE 的值为 1(分数:2.00)A.B.C.D. 解析:解析 枚举变量中的枚举元素系统是按照常量来处理的。如果没有进行元素赋值操作,那么元素将会被系统从 0 开始自动递增地进行赋值操作,但是,如果一旦定义了某一个元素的值,那么系统将对下一个元素进行按前一个元素的值加 1 操作,故 wHITE=1,YELLOW=2,GREEN=5,RED=6,BLACK=10。10.下列叙述中正确的是_。 A.软件测试应该由程序开发者
20、来完成 B.程序经调试后一般不需要再测试 C.软件维护只包括对程序代码的维护 D.以上三种说法都不对(分数:1.00)A.B.C.D. 解析:解析 程序调试就是诊断和改正程序中的错误,由程序开发者完成。软件测试是为了发现错误而执行程序的过程,它由专门的测试人员完成。软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。11.有如下程序#includeiostream.hvoid main( )float x=2.O,y;if(xO.0)y=0.0;else if(x10.O)y=1.0/x;else y=1.0;couty;该程序的输
21、出结果是 A. 0 B. 0.25 C. 0.5 D. 1.0(分数:1.00)A.B.C. D.解析:解析 本题考查 if 语句的使用方法。 解题要点 该表达式的语句是 if(表达式 1) 语句 1 else if(表达式 2) 语句 2 else if(表达式 3) 语句 3 else 语句 4 由 if 表达式可知,题中直接执行if 语句的第 2 条 else if(x10.0)y=1.O/x;。 考点链接 else 总是与最近的没有匹配的 if 匹配。12.下列关于线性链表的叙述中,正确的是U /U。 A. 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致 B. 各数
22、据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续 C. 进行插入与删除时,不需要移动表中的元素 D. 以上三种说法都不对(分数:2.00)A.B.C. D.解析:解析 线性表的链式存储结构称为线性链表。在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。13.下面程序的结果为#include“iostream.h“void change(int a,int b)int temp;tempa;ab;btemp;void main()int m,n;m8;n9;change(m,n);
23、coutm“ “nendl; A. 8 9 B. 9 8 C. 程序有错误 D. 9 9(分数:2.00)A. B.C.D.解析:解析 考查交换两整数的方法。 解题要点 两数只在函数 change 内被使用,函数调用完后该内存被释放,因此没有交换两数。 考点链接 交换两个数的方法简单说有两种一是使用指针,二是用引用。14.在软件设计中,不属于过程设计工具的是U /U。 APDL(过程设计语言) BPAD 图 CNS图 DDFD 图(分数:2.00)A.B.C.D. 解析:解析 PDL 是过程设计语言(Procedure Design Language)的简写,也称程序描述语言,是用于描述模块算
24、法设计和处理细节的语言;NS 图是编程过程中常用的一种分析工具,提出了最初分析问题方法;PAD 是问题分析图(Problem Analysis Dlagram)的简写,它用二维树型结构的图表示程序的控制流,将这种图转换为程序代码比较容易;DFD(数据流图)是描述数据处理过程的工具。15.对关系 S 和 R 进行集合运算,产生的元组属于 S 中的元组,但不属于 R 中的元组,这种集合运算称为U /U。 A.并运算 B.交运算 C.差运算 D.积运算(分数:2.00)A.B.C. D.解析:16.设 a 和 b 均为 double 型变量,且 a=55、b=25,则表达式(int)a+bb 的值是
25、U /U。 A.6.500000 B.6 C.5.500000 D.6.000000(分数:2.00)A.B.C.D. 解析:17.有如下程序:int x =3;do x- =2;cout x; while(! (-x);执行这个程序的输出结果是U /U。 A. 1 B. 30 C. 1-2 D. 死循环(分数:1.00)A.B.C. D.解析:解析 本题考查 do. while 语句,执行 do. while 语句时,先执行循环体内的语句,然后判断 while 中表达式的值,表达式为非零时,返回重新执行循环体语句。在本题中,先执行循环体内的语句,输出 2,然后判断表达式,为非零,且此时 x
26、为 0;再次执行循环体时,输出-2,然后判断表达式为 0,不执行,退出,所以答案为 C。18.有如下程序:#include iostream.husing namespace std;class Demopublic:Demo()f cout“default constructor/n“;Demo(const Demo ;Demo userCode (Demo b)(Demo c(b); return c;int main()Demo a,d;cout“calling userCode()/n“;d=userCode(a);return 0;执行上面程序的过程中,构造函数 Demo()和 De
27、mo (const Democonst A*ptr new A;则下列语句错误的是U /U。 A.ptr-a=100; B.ptr= C.ptr+; D.obj2=*ptr;(分数:2.00)A. B.C.D.解析:解析 本题考查 const 修饰符的作用。注意:const 位置不同,其修饰的部分也是不同的。本题中 const 修饰的是 ptr 所指的对象本身,所以,ptr 是可以重新指向新的对象,而 ptr-a 则无法被更新。30.算法分析的目的是U /U。 A. 找出数据结构的合理性 B. 找出算法中输入和输出之间的关系 C. 分析算法的易懂性和可靠性 D. 分析算法的效率以求改进(分数:
28、2.00)A.B.C.D. 解析:解析 算法是指对解题方案准确而完整的描述,而对算法进行分析的目的,是为了在原有的基础上,对算法进行改进,从而提高对数据的处理效率。31.设有如下程序:#include iostream.hclass Apublic:int i;display() cout“class A/n“;class Bpublic:int i;display() cout“class B/n“;class C:public:A, public:Bint j;public:int i;show() j=i*i;display();void main()C demo;demo.show()
29、;则主程序运行时,将U /U。 A.因为变量 i 的重复定义而报错 B.因为对象 demo 间接调用 display 函数时产生歧义性而报错 C.因为类定义的语法错误而不能运行 D.没有语法错误,能够正常输出结果(分数:2.00)A.B. C.D.解析:32.设有基类定义:class Cbase private: int a;protected: int b;public: int c;派生类采用何种继承方式可以使成员变量 b 成为自己的私有成员 A. 私有继承 B. 保护继承 C. 公有继承 D. 私有、保护、公有均可(分数:2.00)A. B.C.D.解析:解析 类的继承中有三种继承方式,
30、他们和类的访问级别相结合在派生类中可以产生多种访问级别。基类中成员为保护的,在派生类中要为私有的,可以采用私有继承。基类中的保护成员在振生类中不是私有就是保护,即级别只能降低而不能升高。基类中的公有成员则可能为私有、保护和私有。33.下列 C+标点符号中表示一条预处理命令开始的是U /U。 A.# B.; C./ D.(分数:1.00)A. B.C.D.解析:34.下列控制格式输入/输出的操作符中,能够设置浮点数精度的是_。 A.setprecision B.setw C.setfill D.showpoint(分数:2.00)A. B.C.D.解析:iomanip 中定义的操纵符包括:set
31、fill(ch)用 ch 填充空白、setprecision(n)将浮点精度置为n、setw(w)、读写 w 个字符的值 showpoint 设置小数点。35.有下列程序:#includestdio.hvoid main() FILE *pf;char *s1=“China“,*s2=“Beijing“;pf=fopen(“abc.dat“,“wb+“);fwrite(s2,7,1,pf);rewind(pf); /*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);以上程序执行后 abc.dat 文件的内容是U /U。 A.China B.Chinang
32、C.ChinaBeij ing D.BeijingChina(分数:2.00)A.B. C.D.解析:解析 本题考查 fwrite 的调用形式。 其格式为“fwrite(buffer,size,count,fp);”。 fwritie 函数的功能是对 fp 所指向的文件存入 count 次,每次存入一个大小为 size 的数据块,将存入的数据块存到 buffer 指向的内存区,如果 buffer 内存区有数据则将其覆盖。 本题中第一次调用 fwrite 函数,向文件中写入是 S2 的值“Beijing”,第二次调用 fwrite 函数,向文件中写入 S1 的值“China”,并将之前“。Bei
33、jing”的前几个字符覆盖,得到 Chinang。二、B填空题/B(总题数:15,分数:27.00)36.对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用 1 的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。(分数:1.00)填空项 1:_ (正确答案:基类)解析:37.虚函数必须是类的U U /U /U。(分数:2.00)填空项 1:_ (正确答案:成员函数)解析:38.在面向对象方法中,类之间共享属性和操作的机制称为 1。(分数:2.00)填空项 1:_ (正确答案:继承。)解析:解析 类是面向对象语言中必备的程序语言结构,用来实现抽象数据类
34、型。类与类之间的继承关系实现了类之间的共享属性和操作,一个类可以在另一个已定义的类的基础上定义,这样使读类型继承了其父类的属性和方法,当然,也可以定义自己的属性和方法。39.在 MyClass 类的定义中,对赋值运算符“=”进行重载。请将画线处缺失的部分补充完整。 _MyClass:operator=(const MyClass,可知,函数返回值应该为一个对象且是 Myclass 对象,所以前面函数返回类型为 MyClass。40.在 C+中,包含了处理用户控制的文件操作所需的信息是指头文件中的U U /U /U。(分数:2.00)填空项 1:_ (正确答案:fstreamh)解析:解析 在
35、C+中,头文件 fstreamh 中包含了处理用户控制的文件操作所需的信息。41.在计算机软件系统的体系结构中,数据库管理系统位于用户和U U /U /U之间。(分数:2.00)填空项 1:_ (正确答案:操作系统 或 OS)解析:42.在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间 1 的信息。(分数:2.00)填空项 1:_ (正确答案:前后件关系)解析:解析 在数据存储结构中,除了要存储数据,还要存储数据的前后件关系,对于顺序存储的数据结构,前后件之间的关系是通过存储空间的位置来实现的,而对于链式存储来说,数据元素之间的前后件关系是通过指针来实现的。43.下列程序的
36、运行结果为_。 #includeiostream.h void main( ) int i; for(i=1;i6;i+)if(i=3)break; cout“i=“iendl; (分数:2.00)填空项 1:_ (正确答案:i=3)解析:解析 本题考察考生的 for 语句和 if 语句综合使用能力。本题的情况适用于希望在满足指定值时停止循环的情况。44.假定用户没有给一个名为 MyClass 的类定义析构函数,则系统为其定义的默认析构函数首部形式为UU /U /U。(分数:2.00)填空项 1:_ (正确答案:MyClass())解析:45.算法复杂度主要包括时间复杂度和U U /U /U复
37、杂度。(分数:2.00)填空项 1:_ (正确答案:空间)解析:46.类的静态成员的定义说明语句不能出现在类的外部,而且只能定义U U /U /U次。(分数:2.00)填空项 1:_ (正确答案:1)解析:解析 静态成员只能初始化 1 次。47.在 C+中封装性、继承性和U U /U /U是面向对象思想的主要特征。(分数:2.00)填空项 1:_ (正确答案:多态性)解析:48.用树型结构表示实体类型及实体间联系的数据模型称为U U /U /U。(分数:1.00)填空项 1:_ (正确答案:层次模型)解析:解析 用树形结构表示实体类型及实体间联系的数据模型称为层次模型,用有向图结构表示实体类型
38、及实体间联系的数据模型称为网状模型,用二维表格结构表示实体及其联系的数据模型称为关系模型。49.下面程序的运行结果为 【10】 。 # include iostreamh void fun(int x=0,int y=0) cout X y; void main( ) fun(5); (分数:1.00)填空项 1:_ (正确答案:【10】50)解析:解析:本题考查的是函数的默认参数,如果一个函数中有多个参数,则默认参数应从右至左逐个定义,所以题目中 x 使用参数 5,y 使用默认参数 0。50.在有序表(1,3,5,7,9,11,13)中二分查找关键字 9 时所需进行的关键字比较次数为 U U /U /U。(分数:2.00)填空项 1:_ (正确答案:3 次)解析:解析 第一次和中间的值(7)比较,由于比其大,因此第二次和右侧子表中的中间值(11)比较,由于比其小,第三次再和左侧子表中间值(9)比较。