1、二级 C+笔试-49 及答案解析(总分:94.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列程序的运行结果为( )。#include iostreamusing namespace std;namespace m int flag = 10;namespace n flag = 100;void mian( ) int flag = 0;using namespace n;coutflag“,“m: flag;(分数:2.00)A.100,10B.100,0C.0,100D.0,102.设 m、n、a、b、c、d 均为 0,执行(m=n= =B) (n=c=
2、=D) 后,m、n 的值是( )。(分数:2.00)A.0,0B.0,1C.1,0D.1,13.时间复杂度和数据的初始排列无关,这种排序是( )。(分数:2.00)A.堆排序B.插入排序C.冒泡排序D.快速排序4.在 C+语言中输出“Hello World”的语句是( )。(分数:2.00)A.cout“Hello World“;B.cout“Hello World“;C.cin“Hello World“;D.cin“Hello World“;5.CMM 提供了一个框架,将软件过程改进的进化步骤组织成 5 个成熟度等级。除第 1 级外,每一级都包含了实现这一级目标的若干关键过程域,每一个关键过
3、程域又包含若干( )。(分数:2.00)A.软件过程性能B.软件过程能力C.关键实践D.软件过程6.下面关于动态联编的描述中,错误的是( )。(分数:2.00)A.动态联编是以虚函数为基础的。B.动态联编是在运行时确定所调用的函数代码C.动态联编调用函数操作是指向对象的指针或者对象的引用。D.动态联编是在编译时确定操作函数7.对于常数据成员,下面描述正确的是( )。(分数:2.00)A.常数据成员可以不初始化,并且不能更新B.常数据成员必须被初始化,并且不能更新C.常数据成员可以不初始化,并且可以被更新D.常数据成员必须被初始化,并且可以被更新8.C+语言建立类族是通过( )。(分数:2.00
4、)A.类的嵌套B.虚函数C.类的继承D.抽象类9.磁盘文件操作中,打开文件的访问方式常量中,以追加方式打开文件的是( )。(分数:2.00)A.inB.outC.appD.ate10.下列函数中,对文件进行写操作的是( )。(分数:2.00)A.getB.readC.seekgD.put11.下面对 C+重载运算符描述正确的是( )。(分数:2.00)A.只有类成员运算祠:B.只有友元运算符C.只有非成员和非友元运算符D.上述三者都有12.下列叙述中错误的是( )。(分数:2.00)A.一个函数中可以存在多条 return 语句B.调用函数可以在一条非独立的语句中完成C.函数无返回值时,可以是
5、 void 类型。D.函数的类型是由函数的返回值决定的13.下面程序的输出结果是( )。#include iostreamusing namespace std;class A public:A( ) cout“A“;class B public:B() coat“B“ ;class C: public A public:B b;C() cout“C“;void mian()C c;(分数:2.00)A.CBAB.ABCC.ACBD.BCA14.若采用孩子兄弟链表作为树的存储结构,则树的后序遍历应采用二叉树的( )。(分数:2.00)A.前序遍历算法B.层次遍历算法C.后序遍历算法D.中序遍历
6、算法15.不能作为函数重载判断依据的是( )。(分数:2.00)A.返回值B.参数个数C.参数类型D.参数顺序16.多重 if_else 语句嵌套使用时,寻找与 else 配套的 if 方法是( )(分数:2.00)A.缩排位置相同的 ifB.其上最近的 ifC.下面最近的 ifD.同行上的 if17.有关析构函数的说法不正确的是( )。(分数:2.00)A.析构函数有且只有一个B.析构函数无任何函数类型C.析构函数和构造函数一样可以有形参D.析构函数的作用是在对象被撤销时收回先前分配的内存空间18.已知一个类 A,其中 Fun()函数是类 A 的一个成员函数,A*p,a;p=,则下面语句正确
7、的是( )。(分数:2.00)A.语句 p=p= /(分数:2.00)A.Myclass( ); /B.Myclass(inti); /C.Myclass( ); /D.AB) BC) CD)23.下面不是数据库管理系统常见的数据模型的是( )。(分数:2.00)A.层次模型B.关系模型C.逻辑模型D.网状模型24.下面对于基类和派生类的描述错误的是( )。(分数:2.00)A.派生类是基类的进一步具体化B.派生类包含基类的成员C.派生类是对基类定义的进一步扩充D.派生类的成员属于基类25.设置虚基类的目的是( )。(分数:2.00)A.简化程序B.消除二义性C.提高运行效率D.减少目标代码行
8、26.并发控制的基本单位是( )。(分数:2.00)A.元素B.数据C.事务D.字段27.下列属于大型数据库系统的是( )。(分数:2.00)A.SQL-ServerB.FoxproC.AccessD.Excel28.在按层次遍历二叉树的算法中,需要借助的辅助数据结构是( )。(分数:2.00)A.有序表B.线性表C.栈D.队列29.对于条件表达式(k)?(i+):(i-)来说,其中的表达式 k 等价于( )(分数:2.00)A.k=0B.k=1C.k!=0D.k!=130.由于软件规模不断扩大,并且软件复杂性不断提高等原因,最终导致( )发生。(分数:2.00)A.软件工程B.软件危机C.结
9、构化程序设计D.程序设计革命31.下面运算符不能被友元函数重载的是( )。(分数:2.00)A.+B.=C.*D.32.在下面程序中,A、B、C、D 四句编译时不会出错的是( )。#include iostreamusing namespace std;class Basepublic:Base();Base(int e):count(C) virtual void print() const = 0;private:int count;class Derived :public Basepublic:Derived():Base(0) Derived(int C) :Base(C) void
10、 printt() constcout “Derived“endl:;void main( ) Derived d(10);Base *pb;pb = /ABase Derived dd = *pb; /BDerived /CBase bb = d; /D(分数:2.00)A.aB.BC.CD.D33.在派生类中重新调用虚函数时,其他方面都必须与基类的相应虚函数保持一致,但要排除( )方面。(分数:2.00)A.参数个数B.参数类型C.函数名称D.函数体34.a=3,b=-4,c=5; 则表达式+a-c+(+B) 的值是( )。(分数:2.00)A.-3B.-4C.-5D.-635.用白盒法技
11、术设计测试用例的方法包括( )。(分数:2.00)A.错误推测B.边界值分析C.基本路径测试D.因果图二、填空题(总题数:12,分数:24.00)36.评价一个算法时间性能的主要标准是算法的 【1】 复杂度。(分数:2.00)填空项 1:_37.数据的基本单位是 【2】 。(分数:2.00)填空项 1:_38.多重表文件和倒排文件都归属于 【3】 文件。(分数:2.00)填空项 1:_39.完全不考虑程序的内部结构和内容特征的是 【4】 测试方法。(分数:2.00)填空项 1:_40.从一个或多个基本表导出的表是一个 【5】 ,它是一个虚表。(分数:2.00)填空项 1:_41.具有相同函数名
12、不同参数表的函数称为 【6】 。(分数:2.00)填空项 1:_42.以下程序中,select 函数的功能是:在 N 行 M 列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。#define N 3#define M 3int select(int aN M,int for(i =0;iN;i+)for(j = 0;jM;j+)if(aijarowcolum)row=i;colum=j;n= 【7】 ;return 【8】 ;main( )int aNM =9,11,23,6,1,15,9,17,20,max,n;max =select(a, 【9】 )
13、;printf( “max = % d,line = % d/n“,max,n);(分数:2.00)填空项 1:_43.在类中定义和实现的函数称为 【10】 。(分数:2.00)填空项 1:_44.若把类 B 定义为类 A 的友元类,则应在类 A 中加入定义语句 【11】 。(分数:2.00)填空项 1:_45.下面的类中定义了一个枚举类型,请完成下面的程序。class Base public:enum Week Sum, Mon,Tue, Wed, Thu, Fri, Sat;Week a;void fun(Base namespace m int flag = 10;namespace n
14、 flag = 100;void mian( ) int flag = 0;using namespace n;coutflag“,“m: flag;(分数:2.00)A.100,10B.100,0C.0,100D.0,10 解析:解析 contflag;输出的是 main()中的 flag 值 0,而 m:flag=10。2.设 m、n、a、b、c、d 均为 0,执行(m=n= =B) (n=c= =D) 后,m、n 的值是( )。(分数:2.00)A.0,0B.0,1C.1,0 D.1,1解析:解析 a=b 值为 1,将 1 的值赋给 m,运算符有真即推出,n 值未变为 0。3.时间复杂度
15、和数据的初始排列无关,这种排序是( )。(分数:2.00)A.堆排序B.插入排序 C.冒泡排序D.快速排序解析:解析 插入排序的元素比较次数取决于原始数据排列的位置。4.在 C+语言中输出“Hello World”的语句是( )。(分数:2.00)A.cout“Hello World“; B.cout“Hello World“;C.cin“Hello World“;D.cin“Hello World“;解析:解析 cout格式输出。5.CMM 提供了一个框架,将软件过程改进的进化步骤组织成 5 个成熟度等级。除第 1 级外,每一级都包含了实现这一级目标的若干关键过程域,每一个关键过程域又包含若
16、干( )。(分数:2.00)A.软件过程性能B.软件过程能力C.关键实践 D.软件过程解析:解析 CMM 提供了一个框架,将软件过程改进的进化步骤组织成五个成熟度等级。除第 1 级外,每一级都包含了实现这一级目标的若干关键过程域,每一个关键过程域又包含若干关键实践。6.下面关于动态联编的描述中,错误的是( )。(分数:2.00)A.动态联编是以虚函数为基础的。B.动态联编是在运行时确定所调用的函数代码C.动态联编调用函数操作是指向对象的指针或者对象的引用。D.动态联编是在编译时确定操作函数 解析:解析 动态联编一直到程序运行时才能确定调用哪个函数。没有虚函数不能够实现动态联编,调用虚函数操作的
17、是指向对象的指针或者对象的引用。7.对于常数据成员,下面描述正确的是( )。(分数:2.00)A.常数据成员可以不初始化,并且不能更新B.常数据成员必须被初始化,并且不能更新 C.常数据成员可以不初始化,并且可以被更新D.常数据成员必须被初始化,并且可以被更新解析:解析 常数据成员必须被初始化,并且不能更新。8.C+语言建立类族是通过( )。(分数:2.00)A.类的嵌套B.虚函数C.类的继承 D.抽象类解析:解析 类通过继承实现类的层次结构。9.磁盘文件操作中,打开文件的访问方式常量中,以追加方式打开文件的是( )。(分数:2.00)A.inB.outC.app D.ate解析:解析 app
18、 是追加方式。10.下列函数中,对文件进行写操作的是( )。(分数:2.00)A.getB.readC.seekgD.put 解析:解析 put 写文件。11.下面对 C+重载运算符描述正确的是( )。(分数:2.00)A.只有类成员运算祠:B.只有友元运算符C.只有非成员和非友元运算符D.上述三者都有 解析:解析 运算符的重载通常有两种形式:重载为类的成员函数和重载为类的非成员函数,非成员函数通常为友元函数。12.下列叙述中错误的是( )。(分数:2.00)A.一个函数中可以存在多条 return 语句B.调用函数可以在一条非独立的语句中完成C.函数无返回值时,可以是 void 类型。D.函
19、数的类型是由函数的返回值决定的 解析:解析 函数声明时决定了函数类型。13.下面程序的输出结果是( )。#include iostreamusing namespace std;class A public:A( ) cout“A“;class B public:B() coat“B“ ;class C: public A public:B b;C() cout“C“;void mian()C c;(分数:2.00)A.CBAB.ABC C.ACBD.BCA解析:解析 先执行基类 A 构造函数输出 A,调用类 B 的构造函数输出 B,调用本身构造函数输出 C。14.若采用孩子兄弟链表作为树的存
20、储结构,则树的后序遍历应采用二叉树的( )。(分数:2.00)A.前序遍历算法B.层次遍历算法C.后序遍历算法D.中序遍历算法 解析:解析 在存储结点信息的同时,附加两个分别指向该结点最左孩子和右邻兄弟的指针域,即可得树的孩子兄弟链表表示。这种存储结构的最大优点是:它和二叉树的二叉链表表示完全一样。可利用二叉树的算法来实现对树的操作。其后序遍历对应二叉树的中序遍历;中序遍历对应二叉树的后序遍历;前遍历对应二叉树的前序遍历。15.不能作为函数重载判断依据的是( )。(分数:2.00)A.返回值 B.参数个数C.参数类型D.参数顺序解析:解析 调用重载函数,编译器检查调用中的参数个数、类型和顺序。
21、16.多重 if_else 语句嵌套使用时,寻找与 else 配套的 if 方法是( )(分数:2.00)A.缩排位置相同的 ifB.其上最近的 if C.下面最近的 ifD.同行上的 if解析:解析 多重 if_else 嵌套时,else 总是与它上面最近的 if 配对。17.有关析构函数的说法不正确的是( )。(分数:2.00)A.析构函数有且只有一个B.析构函数无任何函数类型C.析构函数和构造函数一样可以有形参D.析构函数的作用是在对象被撤销时收回先前分配的内存空间 解析:解析 析构函数是在对象被撤销之前执行,但析构函数本身并不会收回先前分配的内存空间。18.已知一个类 A,其中 Fun
22、()函数是类 A 的一个成员函数,A*p,a;p=,则下面语句正确的是( )。(分数:2.00)A.语句 p=p= /(分数:2.00)A.Myclass( ); / B.Myclass(inti); /C.Myclass( ); /D.AB) BC) CD)解析:解析 类中的数据成员不能在定义类时直接赋初值。23.下面不是数据库管理系统常见的数据模型的是( )。(分数:2.00)A.层次模型B.关系模型C.逻辑模型 D.网状模型解析:解析 数据库模型分为层次模型、网状模型和关系模型,其中层次模型和网状模型称为非关系模型。24.下面对于基类和派生类的描述错误的是( )。(分数:2.00)A.派
23、生类是基类的进一步具体化B.派生类包含基类的成员C.派生类是对基类定义的进一步扩充D.派生类的成员属于基类 解析:解析 派生类是基类的进一步具体化;派生类包含基类的成员;派生类是对基类定义的进一步扩充;派生类的成员不属于基类。25.设置虚基类的目的是( )。(分数:2.00)A.简化程序B.消除二义性 C.提高运行效率D.减少目标代码行解析:解析 设置虚基类的目的是为了消除二义性。26.并发控制的基本单位是( )。(分数:2.00)A.元素B.数据C.事务 D.字段解析:解析 并发控制的基本单位是事务。27.下列属于大型数据库系统的是( )。(分数:2.00)A.SQL-Server B.Fo
24、xproC.AccessD.Excel解析:解析 SQL Server、Oracle、DB2 等属于大型数据库系统,Foxpro 和 Access 属于中小型数据库系统,Excel 不是数据库系统。28.在按层次遍历二叉树的算法中,需要借助的辅助数据结构是( )。(分数:2.00)A.有序表B.线性表C.栈D.队列 解析:解析 在按层次遍历二叉树的算法中,需要借助的辅助数据结构是队列。29.对于条件表达式(k)?(i+):(i-)来说,其中的表达式 k 等价于( )(分数:2.00)A.k=0B.k=1C.k!=0 D.k!=1解析:解析 条件表达式 e1? e2:e3 的含义是 e1 为真时
25、,取表达式 e2 的值,否则取表达式 e3 的值,“为真”的意思就是不等于 0。30.由于软件规模不断扩大,并且软件复杂性不断提高等原因,最终导致( )发生。(分数:2.00)A.软件工程B.软件危机 C.结构化程序设计D.程序设计革命解析:解析 由于软件规模不断扩大并且软件复杂性不断提高等原因,最终导致软件危机发生。31.下面运算符不能被友元函数重载的是( )。(分数:2.00)A.+B.= C.*D.解析:解析 =,(),-运算符不能够重载为类的友元函数。32.在下面程序中,A、B、C、D 四句编译时不会出错的是( )。#include iostreamusing namespace st
26、d;class Basepublic:Base();Base(int e):count(C) virtual void print() const = 0;private:int count;class Derived :public Basepublic:Derived():Base(0) Derived(int C) :Base(C) void printt() constcout “Derived“endl:;void main( ) Derived d(10);Base *pb;pb = /ABase Derived dd = *pb; /BDerived /CBase bb = d;
27、 /D(分数:2.00)A.a B.BC.CD.D解析:解析 B 和 C 不符合赋值兼容规则,D 不能建立抽象类的对象。33.在派生类中重新调用虚函数时,其他方面都必须与基类的相应虚函数保持一致,但要排除( )方面。(分数:2.00)A.参数个数B.参数类型C.函数名称D.函数体 解析:解析 派生类中的虚函数必须和基类的虚函数具有相同的函数名、参数个数、参数类型、相同返回值,或者都返回指针或者引用,其中派生类返回的指针或者引用的基类型是基类中的虚函数的所返回的指针或者引用的基类新的子类型。34.a=3,b=-4,c=5; 则表达式+a-c+(+B) 的值是( )。(分数:2.00)A.-3B.
28、-4 C.-5D.-6解析:解析 +a=4,4-c=-1,+b=-3,-1+(-3)=-4。35.用白盒法技术设计测试用例的方法包括( )。(分数:2.00)A.错误推测B.边界值分析C.基本路径测试 D.因果图解析:解析 白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。白盒测试的主要方法有逻辑驱动、基本路径测试等,主要用于软件验证。二、填空题(总题数:12,分数:24.00)36.评价一个算法时间性能的主要标准是算法的 【1
29、】 复杂度。(分数:2.00)填空项 1:_ (正确答案:时间)解析:解析 评价一个算法时间性能的主要标准就是算法的时间复杂度。它是某个算法的时间耗费,是该算法所求解问题规模的函数。37.数据的基本单位是 【2】 。(分数:2.00)填空项 1:_ (正确答案:数据元素)解析:解析 数据元素是数据的基本单位。38.多重表文件和倒排文件都归属于 【3】 文件。(分数:2.00)填空项 1:_ (正确答案:多关键字)解析:解析 包含有多个次关键字索引的文件称为多关键字文件,多重表文件和倒排文件都归属于多关键字文件。39.完全不考虑程序的内部结构和内容特征的是 【4】 测试方法。(分数:2.00)填
30、空项 1:_ (正确答案:黑盒)解析:解析 黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。40.从一个或多个基本表导出的表是一个 【5】 ,它是一个虚表。(分数:2.00)填空项 1:_ (正确答案:视图)解析:解析 视图是从一个或多个基本表中导出的虚表,它本身不存储数据。41.
31、具有相同函数名不同参数表的函数称为 【6】 。(分数:2.00)填空项 1:_ (正确答案:重载函数)解析:解析 重载函数的定义。42.以下程序中,select 函数的功能是:在 N 行 M 列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。#define N 3#define M 3int select(int aN M,int for(i =0;iN;i+)for(j = 0;jM;j+)if(aijarowcolum)row=i;colum=j;n= 【7】 ;return 【8】 ;main( )int aNM =9,11,23,6,1,15,9
32、,17,20,max,n;max =select(a, 【9】 );printf( “max = % d,line = % d/n“,max,n);(分数:2.00)填空项 1:_ (正确答案:7 row8 arowcolum9 n)解析:解析 row 记录行下标arowcolum 返回最大值。n 引用调用时传变量名43.在类中定义和实现的函数称为 【10】 。(分数:2.00)填空项 1:_ (正确答案:内联函数)解析:解析 在类中定义和实现的函数称为内联函数。44.若把类 B 定义为类 A 的友元类,则应在类 A 中加入定义语句 【11】 。(分数:2.00)填空项 1:_ (正确答案:f
33、riend class B;)解析:解析 若把类 B 定义为类 A 的友元类,则应在类 A 中加入的定义语句为 friend class B;。45.下面的类中定义了一个枚举类型,请完成下面的程序。class Base public:enum Week Sum, Mon,Tue, Wed, Thu, Fri, Sat;Week a;void fun(Base &B) 【12】 = 【13】 ; /将对象的 a 赋值为所定义的枚举类型值为的枚举量(分数:2.00)填空项 1:_ (正确答案:12 b.a13 Tue)解析:解析 b. a 取对象的成员变量Tue 在枚举中变量为 2 的是 Tue46.重载的流运算符函数经常定义为类的 【14】 函数。(分数:2.00)填空项 1:_ (正确答案:友元)解析:解析 参见友元函数的定义。47.在 C+中,包含了处理用户控制的文件操作所需的信息是指头文件中的 【15】 。(分数:2.00)填空项 1:_ (正确答案:fstreamh)解析:解析 在 C+中,头文件 fstreamh 中包含了处理用户控制的文件操作所需的信息。