[计算机类试卷]国家二级(C++)笔试模拟试卷176及答案与解析.doc

上传人:roleaisle130 文档编号:502634 上传时间:2018-11-29 格式:DOC 页数:22 大小:59KB
下载 相关 举报
[计算机类试卷]国家二级(C++)笔试模拟试卷176及答案与解析.doc_第1页
第1页 / 共22页
[计算机类试卷]国家二级(C++)笔试模拟试卷176及答案与解析.doc_第2页
第2页 / 共22页
[计算机类试卷]国家二级(C++)笔试模拟试卷176及答案与解析.doc_第3页
第3页 / 共22页
[计算机类试卷]国家二级(C++)笔试模拟试卷176及答案与解析.doc_第4页
第4页 / 共22页
[计算机类试卷]国家二级(C++)笔试模拟试卷176及答案与解析.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、国家二级( C+)笔试模拟试卷 176及答案与解析 1 下列数据结构中,属于非线性结构的是 ( A)循环队列 ( B)代链队列 ( C)二叉树 ( D)带链栈 2 下列数据结构中,能够按照 “先进后出 ”原则存取数据的是 ( A)循环队列 ( B)栈 ( C)队列 ( D)二叉树 3 对于循环队列,下列叙述中正确的是 ( A)队头指针是固定不变的 ( B)队头指针一定大于队尾指针 ( C)队头指针一定小于队尾指针 ( D)队头指针可以大于队尾指针,也可以小于队尾指针 4 算法的空间复杂度是指 ( A)算法在执行过程中所需要的计算机存储空间 ( B)算法所处理的数据量 ( C)算法程序中的语句或

2、命令条数 ( D)算法在执行过程中所需要的临时工作单元数 5 软件设计中划分模块的一个准则是 ( A)低内聚低耦合 ( B)高内聚低耦合 ( C)低内聚高耦合 ( D)高内聚高耦合 6 下列选项中不属于结构化程序设计原则的是 ( A)可封装 ( B)自顶向下 ( C)模块化 ( D)逐步求精 7 数据库管理系统是 ( A)操作系统的一部分 ( B)在操作系统支持下的系统软件 ( C)一 种编译系统 ( D)一种操作系统 8 在 E-R图中,用来表示实体联系的图形是 ( A)椭圆形 ( B)矩形 ( C)菱形 ( D)三角形 9 已知函数 FA调用 FB,若要把这两个函数定义在同一个文件中,则

3、( A) FA必须定义在 FB之前 ( B) FB必须定义在 FA之前 ( C)若 FA定义在 FB之后,则 FA的原型必须出现在 FB的定义之前 ( D)若 FB定义在 FA之后,则 FB的原型必须出现在 FA的定义之前 10 有如下两个类的定义: class AA; class BB AA vl, *v2; BB v3: int*v4: ; 其中有一个成员变量的定义是错误的,这个变量是 ( A) v1 ( B) v2 ( C) v3 ( D) v4 11 有如下类定义: class XX int xdata: public: xx(int n=0):xdata(n) class YY: p

4、ublic XX int ydata; public: YY(int m=0, int n=0): xx(m),ydata(n) ; YY类的对象包含的数据成员的个数是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 12 下列关于运算符函数的叙述中,错误的是 ( A)运算符函数的名称总是以 operator为前缀 ( B)运算符函数的参数可以是对象 ( C)运算符函数只能定义为类的成员函数 ( D)在表达式中使用重载的运算符相当于调用运算符重载函数 13 下列关于模板形参的描述中,错误的是 ( A)模板形参表必须在关键字 template之后 ( B)模板形参表必须用小括号 ()括起

5、来 ( C)模板形 参表必须用小括号 ()括起来 ( D)可以用 typename修饰模板形参 14 在下列枚举符号中,用来表示 “相对于当前位置 ”文件定位方式的是 ( A) ios_base:CHr ( B) ios_base:beg ( C) ios_base:out ( D) ios_base:end 15 下列字符串中可以用作 C+标识符的是 ( A) 2009var ( B) goto ( C) test-2009 ( D) -123 16 在下列枚举类型的定义中,包含枚举值 3的是 ( A) entire test(RED, YELLOW, BLUE, BLACK); ( B)

6、enum test(RED, YELLOW=4, BLUE, BLACK); ( C) enum test(RED=-1, YELLOW, BLUE, BLACK); ( D) enum test(RED, YELLOW=6, BLUE, BLACK); 17 有如下程序段: int i=1; while(1) i+; if(i=10)break; if(i%2=0)eout $; 执行这个程序段输出字符 *的个数为 ( A) 10 ( B) 3 ( C) 4 ( D) 5 18 已知数组 arr的定义如下: int arr5=1, 2, 3, 4, 5; 下列语句中,输出结果不是 2的是 (

7、 A) cout *arr+1 endl; ( B) tout *(arr+1) endl; ( C) cout arr1 endl; ( D) eout %arr endl; 19 计算斐波那契数列第 n项的函数定义如下: int fib(int n) if(n=0)return 1; else if(n=1)return 2; else return fib(n-1)+fib(n-2); 若执行函数调用表达式fih(2),函数 fih被调用的次数是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 20 Sample是一个类,执行下列语句后,调用 Sample类的构造函数的次数是Sa

8、mple a2, *P=Flew Sample; ( A) 0 ( B) 1 ( C) 2 ( D) 3 21 定义对象数组 a2时,要调用 2次构造函数;生成 *p的对象 时,要调用一次构造函数,故答案为 3。 ( A)使用虚基类可以消除由多继承产生的二义性 ( B)构造派生类对象时,虚基类的构造函数只被调用一次 ( C)声明 “class B:virtual public A”说明类 B为虚基类 ( D)建立派生类对象时,首先调用虚基类的函数 22 将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是 ( A)不合法的运算符 ( B)不合法的运算符 ( C)无操作数的运算符 (

9、D)二元运算符 23 当运算符重载为成员函数时,如果函数参数表中没有参数,则表明该重 载为单目运算符,操作数就为该对象本身;如果函数参数表中有一个参数,则表示该重载为双目运算符,另外一个操作数为该对象本身。 ( A) template class T1, class T2 class A; ( B) template class T1, typename T2 class A; ( C) template typename T1, class T2 class A; ( D) template typename T1, T2 class A; 24 下列关于 C+流的叙述中,错误的是 ( A)

10、 cout A表达式可以输出字符 A ( B) eof( )函数可以检测是否到达文件尾 ( C)对磁盘文件进行流操作时,必须包含头文件 fstream ( D)以 ios_base:out模式打开的文件不存在时,将自动建立一个新文件 25 有如下程序: #include iostream using namespace std; class Toy public: Toy(char*_n)strcpy(name, _n); count+; Toy()count-; char*GetName( )return name; static int getCount( )return count; p

11、rivate: char name10; static int count; ; int Toy:count=0: int main( ) Toy tl(“Snoopy“), t2(“Mickey“), t3(“Barbie“); cout t1 getCount( ) endl; return 0; 程序的输出结果是 ( A) 1 ( B) 2 ( C) 3 ( D)运行时出错 26 有如下程序: #include iostream using namespaee std; class A public: A(int i): rl(i) void print( )cout E rl -; v

12、oid print( )constcout C rl*rl -; private: int rl; ; int main( ) A al(2); eonst A a2(4); a1 print( ); a2 print( ); return 0; 程序的输出结果是 ( A)运行时出错 ( B) E2-C16- ( C) C4-C16- ( D) E2-E4- 27 有如下程序: #include iostream using namespace std; class Name char name20; public: Name( )strepy(name, “ “); tout ?; Name

13、(char*fname)strcpy(name, fname); cout ?; ; int main( ) Name name3=Name(“张三 “), Name(“李四 “); return 0; 运行此程序输出符号“?”的个数是 ( A) 0 ( B) 1 ( C) 2 ( D) 3 28 有如下程序: #include iostreanl using namespaee std; class AA public: AA( )cout 1; ; class BB: public AA int k; public: BB( ): k(0)eout 2; BB(int n): k(n)co

14、ut 3; ; int main( ) BB, b(4), c; return 0; 程序的输出结果是 ( A) 1312 ( B) 132 ( C) 32 ( D) 1412 29 有如下程序: #include iostream using namespace std; class C1 public: Cl( )cout 1; ; class C2: public C1 public: C2( )cout 2; ; int main( ) C2 cb2; C1*cb1: return 0; 程序的输出结果是 ( A) 121 ( B) 21 ( C) 211 ( D) 12 30 有如下

15、程序: #include iostream using namespace std; class Publication/出版物类 char name30; public: Publication(char*name=“未知名称 “)strcpy(this- name, name); const char*getName( )constreturn name; /常数据成员 virtual const char*getType( )constreturn“未知类型 “; /虚常数据成员 ; class Book: public Publication /书类 public: Book(char

16、*name):Publication(name) virtual const char*getType( )constreturn“书 “; /虚常数据成员 ; void showPublication(Publication p)cout p getType( )“: “ P getName( ) endl; int main( ) Book book(“精彩人生 “); showPublication(book); return 0; 程序的输出结果是 ( A)未知类型:未知名称 ( B)未知类型:精彩人生 ( C)书:未知名称 ( D)书:精彩人生 31 下列关于运算符重载的叙述中,错误

17、的是 ( A) :运算符不能重载 ( B)类型转换运算符只能作为 成员函数重载 ( C)将运算符作为非成员函数重载时必须定义为友元 ( D)重载 运算符应完成 “下标访问 ”操作 32 有如下程序: #include iostream #include iomanip using namespace std; int main( ) int S =123, 234; cout right setfill(*)setw(6); for(int i=0; i 2; i+)COUt si endl; return 0; 程序的输出结果是 ( A) 123 234 ( B) *123 234 ( C)

18、 *123 *234 ( D) *123 234* 33 有以下类定义: class A char*a; public: A( ):a(0) A(char*aA) /把 aa所指字符串复制到 a所指的存储空间 a=_; strcpy(a, aA) ; A( )delete a; ; 画线处应填写的表达式是 ( A) new charstrlen(aA)+1 ( B) charstrlen(aA)+1 ( C) charstrlen(aA) ( D) new charsizeof(aA)-1 34 数据管理技术发展过程经过了人工管理、文件系统和数据库系统 3个阶段,其中数据独立性最高的阶段是 _

19、。 35 算法复杂度主要包括时间复杂度和 _复杂度。 36 在进行模块测试时,要为每个被 测试的模块另外设计两类模块:驱动模块和承接模块 (桩模块 )。其中 _的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。 37 一棵二叉树第 6层 (根结点为第 1层 )的结点数最多为 _个 38 数据结构分为逻辑结构和存储结构,循环队列属于 _结构。 39 下列函数的功能是判断字符串 str是否对称,对称则返回 true,否则返回 false。请在画线处填上适当内容,实现该函数。 bool fun(char*str) int i: 0, j=0; while(strj) (6) ; f

20、or(J-; i jstri=strJ; i+, J-); return i (7) J; 40 执行语句序列 intx=10 r=x: cout x - r endl; 输出结果为 _。 41 下列程序的输出结果为 Object id=0 Object id=1 请将程序补充完整。 #include iostream using namespace std; class Point public: Point(int xx=0, intyy=0)X=xx; Y=yy; countP+; Point( )eountP-; int GetX( )return X; int GetY( )retu

21、rn Y; static void GetC( )cout “Object id=“ countP endl; private: int X, Y; static int countP; ; _/静态数据成员的初始化 int main( ) Point:GetC( ); Point A(4, 5); A GetC( ); return 0; 42 非成员函数应声明为类的 _函数才能访问这个类的 private成员。 43 派生类中的成员不能直接访问基类中的 _成员。 44 下列程序的输出结果为 2,请将程序 补充完整。 #include iostream using namespaee std

22、; class Base public: _void fun( )cout 1; ; class Derived:public Base public: void fun( )cout 2; ; int main( ) Base*P=new Derived: p- fun( ); delete P; return 0; 45 请将下列类定义补充完整。 class Basepublic: void fun( )cout “Base:fun“ endl; ; class Derived: public Base public: void fun( ) _ /显式调用基类的 fun函数 cout “

23、Derived:fun“ endt; ; 46 多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但 运算符只能作为类的 _函数重载。 47 下面是一个栈类的模板,其中 push函数将元素 i压入栈顶, pop函数弹出栈顶元素。栈初始为空, top值为 0,栈顶元素在 stacktop-1中,在下面画线处填上适当语句,完成栈类模板的定义。 template class T class T stack enunlsize=1000; T stacksize; intop; public: T stack( ): top(0) void push(consT i) if(top si

24、ze)stacktop+=i; T pop( ) if(top=0)exit(1); /栈空时终止运行 return_; ; 国家二级( C+)笔试模拟试卷 176答案与解析 1 【正确答案】 C 【试题解析】 根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构 分为两大类型:线性结构与非线性结构。线性结构表示数据元素之间为一对一的关系,非线性结构表示数据元素之间为一对多或者多对一的关系。根据各种结构的定义可知,二叉树是一种非线性结构。 2 【正确答案】 B 【试题解析】 栈是限定只在一端进行插入与删除的线性表。通常称插入、删除的这一端为栈顶,另一端为栈底。栈顶元素总是最后被插入的

25、元素,也是最先被删除的元素;栈底元素总是最先被插入的元素,也是最后才能被删除的元素。栈是按照 “先进后出 ”或 “后进先出 ”的原则组织数据的。 3 【正确答案】 D 【试题解 析】 循环队列是将顺序队列首尾相连形成的,随着插入元素或删除元素的进行,其队头指针及队尾指针是在不断变化的,有时可能会出现队头指针大于队尾指针的情况,也可能是队尾指针大于队头指针,故答案为 D。 4 【正确答案】 A 【试题解析】 算法的空间复杂度是指:算法执行过程中所需的存储空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间及算法执行过程中所需要的额外空间。 5 【正确答案】 B 【试

26、题解析】 模块划分应考虑的因素包括模块之间的耦合和内聚。一般来说,要求 模块之间的耦合尽可能低,即模块尽可能独立;要求模块的内聚程度尽可能高,即遵循高内聚、低耦合的原则。 6 【正确答案】 A 【试题解析】 模块化、自顶向下和逐步求精都是结构化程序设计的原则;可封装是面向对象程序设计原则。 7 【正确答案】 B 【试题解析】 数据库管理系统是指位于用户与操作系统之间的数据管理软件。数据库管理系统是为数据库建立、使用和维护而配置的软件。 8 【正确答案】 C 【试题解析】 E-R图中用矩形表示实体 (等同于表 ),用椭圆形表示实体的属性 (等同于表中 的字段 ),用菱形表示实体关系 (等同于外键

27、 )。 9 【正确答案】 D 【试题解析】 一个函数 A要调用另外一个函数 B,则 B的函数原型声明一定要在 A之前,但定义在前或者后都没有关系。 10 【正确答案】 C 【试题解析】 在本类的数据成员定义中,不能定义本类的对象,否则就出现了递归定义,这是不允许的。 11 【正确答案】 B 【试题解析】 派生类继承基类,继承了基类的数据成员和成员函数,加上派生类自己新定义的数据成员,所以该类应该有 2个数据成员。 12 【正确答案】 C 【试题解析】 运算符函数可以重载为成员函数,也可以重载为非成员函数,如重载为友元函数。 13 【正确答案】 B 【试题解析】 对函数模板,模板的一般格式为:

28、template tyname类型参数函数类型函数名 (形参 )函数体 对类模板,一般格式为: template class类型参数 class类名 ,类型参数是用一对括起来。 14 【正确答案】 A 【试题解析】 ios_base:cur表示相对当前位置需要计算的文件字节数偏移量,ios_base:beg表示从文件头位置开始计算的文件字节数偏移量, ios_base:end表示从文件末尾位置开始计算的文件字节数偏移量。 15 【正确答案】 D 【试题解析】 在 C+中,变量标识符必须以大小写字母或下画线开始,是由数字或者字母下画线等组成的一个字符串,其中 C+关键字不能作为标识符,不能包含

29、-、 +、 *、 /等运算符号。 C+变量区分大小写。 16 【正确答案】 A 【试题解析】 枚举变量中的枚举元素系统是按照常量来处理的,如果没有进行元素赋值操作,那么元素将会被系统自动从 0开始自动递增地进行赋值操作,但是,如果一旦定义了某一个元素,那么系统将对下一个元素进行前一个元素的值加 1操作。 17 【正确答案】 C 【试题解析】 相当于统计 1 10之间的偶数个数,遇到偶数打印 “*”,故打印 *的个数为 4。 18 【正确答案】 D 【试题解析】 D打印的是指针的地址。 19 【正确答案】 C 【试题解析】 f(2)=f(0)+f(1),所以应该执行 3次。 20 【正确答案】

30、D 【试题解析】 定义对象数组 a2时,要调用 2次构造函数;生成 *p的对象时,要调用一次构造函数,故答案为 3。 21 【正确答案】 C 【试题解析】 使用虚基类的目的就是为了解决多继承路径下对基类成员的访问的二义性问题。一旦继承虚基类,那么在构造派生类对象时,虚基类构造函数就只调用一次。派生类对象调用构造函数和普通类对象一样,都是先调用基类构造函数,然后调用派生类构造函数。 22 【正确答案】 B 【试题解析】 当运算符重载为成员函数时,如果函数参数表中没有参数,则表明该重载为单目运算符,操作数就为该对象本身;如果函数参数表中有一个参数,则表示该重载为双 目运算符,另外一个操作数为该对象

31、本身。 23 【正确答案】 D 【试题解析】 在模板定义中,一般情况下, class和 typename可以互换。在选项D中, T2没有类型参数限制定义,所以和题干给出的定义不同。 24 【正确答案】 A 【试题解析】 COHt流对象后面跟的应该是插入运算符 “ ”而不是提取运算符“ ”,故选项 A错。 25 【正确答案】 C 【试题解析】 静态数据成员是同一个类的不同对象之间的数据共享,无论创建多少个类,均只有一个静态数据成员,通过对静态数据成员的 调用,实现了数据共享。本题创建了 3个 Toy对象,所以调用 3次构造函数, count被增加 3次,故sount=3。 26 【正确答案】 B

32、 【试题解析】 在类中重载函数的情况下,常对象调用类的常成员函数,非常对象调用类的非常成员函数,故答案为 B。 27 【正确答案】 D 【试题解析】 Name name3定义了一个 name对象数组,有 3个元素,前 2个调用 Name(char *fname)构造函数,第三个元素调用 Name( )构造函数,故打印 3个“?”。 28 【正确答案】 A 【试题解析】 创建派生类对象时,先调用基类构造函数,然后调用派生类构造函数, b(4)先调用基类构造函数,然后调用 BB的带参数构造函数,打印 1和 3; c调用基类 AA的构造函数,然后调用 BB的构造函数,打印 1和 2。故答案为 A。

33、29 【正确答案】 B 【试题解析】 对象的派生撤销时,先调用派生类析构函数,然后调用基类析构函数,故答案为 B。 30 【正确答案】 D 【试题解析】 在函数形参是基类对象,可以在函数调用时用派生类对象作为实参。此时基类对象只能调用自己的数据成员,但是 virtual函数除外,该成员在派生类中被改写,在基类中仍然适用,故答案为 D。 31 【正确答案】 C 【试题解析】 C是错误的,其余为规定。 32 【正确答案】 B 【试题解析】 setfill(*)填充设置仅影响紧跟其后的输出操作,第二次循环时失效 33 【正确答案】 A 【试题解析】 为 a申请一个比 aa串长增加 1的一个存储空问。

34、 B和 C缺少 new运算子, D分配空间不足。 34 【正确答案】 数据库系统 【试题解析】 数据库系统通过三层模式、两级映射保证了数据库的数据独 立性,而其他人工管理和文件系统均无法保证数据的独立性。 35 【正确答案】 空间 【试题解析】 算法的复杂度包含时间复杂度和空间复杂度,空间复杂度指的是程序运行所要消耗的存储空间。一个算法的优劣主要从算法的执行时间和所需要的存储空间两个方面来衡量 36 【正确答案】 驱动模块 【试题解析】 驱动模块是用来模拟被测试模块的上一级模块,相当于被测模块的主程序,它将接收数据,将相关数据传送给被测模块,启用被测模块,并打印出相应的结果。 37 【正确答案

35、】 32 38 【正确答案】 存储 【试题解析】 数据结构包括逻辑结构和物理结构 (存储结构 ),逻辑结构包括集合、线性、树、网络等,而存储结构主要指的是逻辑结构的存储,包括顺序、链表、索引、散列等。 39 【正确答案】 j-, = 【试题解析】 首先利用 while循环得到数组的最大下标 j, i为数组的最小下标,然后在 for循环中判断将 j和 i逐次移动并判断对应位置上的元素是否相等。当 i=j时,则表示数组元素为完全对称,返回为 true;否则为不对称,返回为 false。 40 【正确答案】 10-10 【试题解析】 引 用声明相当于是为变量声明一个别名,所以 r=x=10。 41

36、【正确答案】 int Point:countP=0; 【试题解析】 静态数据成员在类中声明,在使用前初始化,一般格式为: 数据类型类名:静态数据成员名 =初始值 42 【正确答案】 友元 【试题解析】 类的私有成员只能被本类的成员函数访问,如果非成员函数要访问本类的私有数据成员,必须将函数定义为该类的友元函数才行。 43 【正确答案】 私有 【试题解析】 派生类成员在私有继承方式下不能访问基类的所有成员,在保 护继承方式下不能访问基类的私有成员,在公有继承方式下不能访问基类的私有成员。 44 【正确答案】 virtual 【试题解析】 在基类中的虚函数在派生类中被重新定义时,该函数仍然为虚函数

37、,但是可以省略不写 virtual关键字,在派生类对象中调用时,则调用被重新定义后的虚函数。 45 【正确答案】 Base:fun( ); 【试题解析】 显式调用基类的成员函数的一般格式为: 基类名 :成员函数名 ( ); 46 【正确答案】 成员 【试题解析】 C+中规定 作为下 标运算符,不能被重载为友元函数,只能被重载为类的成员函数。 47 【正确答案】 stack(-top); 【试题解析】 POP( )操作中,当栈中含有元素时则弹出栈顶元素,所以应该返回栈顶元素 stack(-top),由于 top指针始终指向的是栈顶元素的上一单元,所以出栈时应该是先将 top下移,然后出栈,故应该是 -top而不是 top-。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1