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