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

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

1、国家二级( C+)笔试模拟试卷 178及答案与解析 1 下列叙述中正确的是 ( A)程序设计就是编制程序 ( B)程序的测试必须由程序员自己去完成 ( C)程序经调试改错后还应进行再测试 ( D)程序经调试改错后不必进行再测试 2 下列数据结构中,能用二分法进行查找的是 ( A)顺序存储的有序线性表 ( B)线性链表 ( C)二叉链表 ( D)有序线性链表 3 下列关于栈的描述中正确的是 ( A)在栈中只能插入元素而不能删除元素 ( B)在栈中只能删除元素而不能插入元素 ( C)栈 是特殊的线性表,只能在一端插入或删除元素 ( D)栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素 4

2、下列叙述中正确的是 ( A)一个逻辑数据结构只能有一种存储结构 ( B)数据的逻辑结构属于线性结构,存储结构属于非线性结构 ( C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 ( D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率 5 下列叙述中正确的是 ( A)软件工程只是解决软件项目的管理问题 ( B)软件工程主要解决 软件产品的生产率问题 ( C)软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 ( D)软件工程只是解决软件开发中的技术问题 6 下列对于软件的叙述中正确的是 ( A)软件测试的目的是证明程序是否正确 ( B)软件

3、测试的目的是使程序运行结果正确 ( C)软件测试的目的是尽可能多地发现程序中的错误 ( D)软件测试的目的是使程序符合结构化原则 7 为了使模块尽可能独立,要求 ( A)模块的内聚程序要尽量高,且各模块间的耦合程序要尽量强 ( B)模块的内聚程序要尽量高,且各模块间的耦 合程序要尽量弱 ( C)模块的内聚程序要尽量低,且各模块间的耦合程序要尽量弱 ( D)模块的内聚程序要尽量低,且各模块间的耦合程序要尽量强 8 下列叙述中正确的是 ( A)程序就是软件 ( B)程序就是软件 ( C)软件既是逻辑实体,又是物理实体 ( D)软件是程序、数据与相关文档的集合 9 数据独立性是数据库技术的重要特点之

4、一。所谓数据独立性是指 ( A)数据与程序独立存放 ( B)不同的数据被存放在不同的文件中 ( C)不同的数据只能被对应的应用程序所使用 ( D)以上 3种说法都不对 10 用树状结构表示实体之间联系的模型是 ( A)关系模型 ( B)网状模型 ( C)层次模型 ( D)以上 3个都是 11 为了取代 C中带参数的宏,在 C+十中使用 ( A)重载函数 ( B)内联函数 ( C)递归函数 ( D)友元函数 12 下列关于类定义的叙述中,正确的是 ( A)类定义中包括数据成员和函数成员的声明 ( B)类成员的缺省访问权限是保护的 ( C)数据成员必须被声明为私有的 ( D)成员函数只能在类体外进

5、行定义 13 下列关于派生类构造函数和析构函数的叙述 中,错误的是 ( A)派生类的构造函数会隐含调用基类的构造函数 ( B)如果基类中没有默认构造函数,那么派生类必须定义构造函数 ( C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数 ( D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数 14 通过运算符重载,可以改变运算符原有的 ( A)操作数类型 ( B)操作数个数 ( C)优先级 ( D)结合性 15 有如下函数模板: template T souare(T x)(returll x * x; ) 其中 T是 ( A)函数形参 ( B)函数实参 (

6、 C)模板形参 ( D)模板实参 16 使用输入 /输出操作符 setw,可以控制 ( A)输出精度 ( B)输出宽度 ( C)对齐方式 ( D)填充字符 17 下列字符串中,不可以用作 C+标识符的是 ( A) y_2006 ( B) _FEST_H ( C) Return ( D) switch 18 字面常量 42、 4.2、 42L的数据类型分别是 ( A) long、 double、 int ( B) long、 float、 int ( C) int、 double、 long ( D) int、 float、 long 19 执行下列语句段后,输出字符 “*”的个数是 for(i

7、nt i=50; i l; -i)cout ”*” ( A) 48 ( B) 49 ( C) 50 ( D) 51 20 有如下程序段,其中会产生编译错误的语句是 inti=0, j=1; int r=i; / r=j; / int * p= i; / * p= r; / ( A) ( B) ( C) ( D) 21 在下面的定义语句中,画线处应填入的内容是 class Fred public: void print( )cout data endl; void setData(double D) data=d; static int count; private: double data;

8、; _count=0; /静态数据成员的定义 ( A) int ( B) static int ( C) int Fred: ( D) static int Fred: 22 有如下程序: #include iostream using namespace std; class Base protected: int i; public: int j; ; class Derived: public Base int m; public: int n; ; int main( ) Derived d; d i=0; /1 d.j=0; /2 d n1=0; /3 d n=0; /4 retur

9、n 0; 其中主函数中有两个赋值语句有错,这两个错误的赋值语句是 ( A) 1和 2 ( B) 1和 3 ( C) 2和 3 ( D) 2和 4 23 在表达式 x-y中, “-”是作为非成员函数重载的运算符。若使用显式的函数调用代替直接使用运算符 “-”,这个表达式还可以表示为 ( A) x operator-(y) ( B) operator-(y, x) ( C) y operator-(x) ( D) operator-(x, y) 24 下列函数模板定义中错误的是 ( A) template class Q ( B) template class Q Q F(Q x)return Q

10、+x; Q F(Q x)return x+x; ( C) template class T ( D) template class T T F(T x)return x * x; bool F(T x)return x 1; 25 已知 outfile是一个输出流对象,要想将 outfile的文件指针定位到当前位置之前321字节处,正确的函数调用语句是 ( A) outfile seekp(321, ios_base:cur); ( B) outfile seekp(321, ios_base:beg); ( C) outfile seekp(-321, ios_base:beg); ( D)

11、 outfile seekp(-321, ios_base:cur); 26 有如下程序: #include cstring #include iostream using namespace std; class MyString public: MyString(const char * s); MyString( )delete data; protected: unsigned len; char * data; ; MyString:MyString(const char * s) len=strlen(s); data=new char1en+1; strcpy(data, s);

12、 int main( ) MyString a(“C+Progreanfing“); MyString b(A) ; return 0; 在运行上面的程序时出错,错误的原因是 ( A)构造函数的实参不允许是本类的对象 ( B)没有定义实现深层复制 (深复制 )的复制构造函数 ( C)构造对象 a时实参与形参类 型不符 ( D)系统不能生成缺失的复制构造函数 27 有如下程序: #include iostream using namespaee std; class Demo public: Demo( )cout “default constructorn“; Demo(const Demo

13、x)cout “copy constructorn“; ; Derno userCore(DemoB) Demo c(B) ;return c; int main( ) Demo a, d; cout “calling userCode( )n“; d=userCode(A) ; return 0; 执行上面程序的过程中,构造函数 Demo( )和Demo(const Demo x)被调用的次数分别为 ( A) 1和 1 ( B) 1和 2 ( C) 2和 3 ( D) 2和 4 28 已知在函数 func中语句 this- ff=0;与语句 ff=0;的效果完全相同。对于这一现象,下列叙述中

14、错误的是 ( A) ff是某个类的数据成员, func是该类的友元函数 ( B) ff是某个类的数据成员, func是该类的成员函数 ( C) this- ff和 ff是同一个变量 ( D) func不是一个静态成员函数 29 如下程序的输出是 #include iostream using namespace std; class Base public: Base( )cout “BB“; f( ); void f( )cout “Bf“; ; class Derived: public Base public: Derived( )eout “DD“; void f( )cout “Df

15、“; ; int main( )Derived d; return 0; ( A) BBBff)D ( B) BBDfDDDf ( C) DD ( D) DDBBBf 30 下列叙述中错误的是 ( A)公有继承时基类中的 public成员在派生类中仍是 public成员 ( B)私有继承时基类中的 protected成员在派生类中仍是 protected成员 ( C)私有继承时基类中的 public成员在派生类中是 private成员 ( D)保护继承时基类中的 public成员在派生类中是 protected成员 31 下列是关于派生类声明的开始部分,其中正确的是 ( A) class vi

16、rtual B: publice A ( B) virtual class B: publice A ( C) class B: public A virtal ( D) class B: public A virtal 32 在重载一个运算符为成员函数时,其参数 表中没有任何参数,这说明该运算符是 ( A)后缀一元运算符 ( B)前缀一元运算符 ( C)无操作数的运算符 ( D)二元运算符 33 关于关键字 class和 typename,下列说法中正确的是 ( A)程序中所有的 typename都可以替换为 class ( B)程序中所有的 class都可以替换为 typename ( C

17、) A)和 B)都正确 ( D) A)和 B)都不正确 34 如下程序的输出结果是 #include iostream #include iomanip using namespace std; class CSum int x, y; public: CSum(int x0, int y0):X(x0), y(y0) friend ostream operator (ostream os, const CSum xA) os setw(5) xa.x+xa.y: return os; ; int main( ) CSum y(3, 5); cout setfill(*) 8; cout y;

18、 return 0; ( A) 88 ( B) *88 ( C) *8*8 ( D) 8*8 35 输出流控制中,如果没有指定对齐方式,则默认为左对齐、右填充, CSum类使 “ ”运算符出栈,并将输出控制为宽度为 5, cout setfill(*) 8;执行时就打印 8*,然后执行 cout y;打印 8,故答案为 D。 ( A) 4, 3, 2, 1, ( B) 4, 3, 6, 7, 2, 1, ( C) 4, 3, 6, 2, 1, ( D) 1, 2, 3, 4, 36 某二叉树有 5个度为 2的结点以及 3个度为 1的结点,则该二叉树中共有_个结点 37 程序流程图中的菱形框表示

19、 _。 38 软件开发过程主要分为需求分析、设计、编码与测试 4个阶段,其中 _阶段产生 “软件需求规格说明书 ”。 39 在数据库技术中,实体集之问的联系可以是一对一或一对多或多对多的,那么“学生 ”和 “可选课程 ”的联系为 _。 40 人员基本信息一般包括身份证号、姓名、性别、年龄等。其中可以作为主关键字 的是 _。 41 若表达式 (x+(y-z)+(m/n)+3中的变量均为 double型,则表达式值的类型为_。 42 有如下循环语句: for(inti=50; i 20; i-=2)cout i “, “; 程序运行时循环体的执行次数是 _。 43 利用表达式 ai可以访问 int

20、型数组 a中下标为 i的元素。在执行了语句int*p=a;后,利用指针 p也可访问该元素,相应的表达式是 _。 44 下面是一个递归函数,其功能是使数组中的元素反序排列 ,请将函数补充完整。 void reverse(int * a, int size) if(size 2)return; int k=a0; a0=asize-1; asize-1=k; reverse(a+l, _); 45 类 Sampie的构造函数将形参 data赋值给数据成员 data。请将类定义补充完整。 class Sample public: Sample(int data=0); priVate: int da

21、ta: ; Sample:Sample(int datA) _ 46 有如下类定义: class Sample public: Sample( ); Sample( ); private: Static int date: ; 将静态数据成员 data初始化为 0的语句是 _。 47 “图形 ”类 Shape-中定义了纯虚函数 calArea( ), “三角形 ”类 Triangle继承了类Shape,请将 Triangle类中的 calArea函数补充完整。 class Shape public: virtual int CalArea( )=0; class Triangle: publi

22、c Shape public: Triangleint S, int h: side(S), height(h) _return side * height/2; private: int side; int height; ; 48 有如下程序: #include iostream using namespace std; class GrandChild public: GrandChild( )strcpy(name, “Unknown“); const char*getName( )constreturn name; virtual char * getAddress( )const=

23、0; private: char name20; ; class GrandSon: public GrandChild public: GrandSon(char * name) char * getAddress( )constreturn“Shanghai“; ; int main( ) GrandChild * gs=new GrandSon(“Feifei“); cout gs- getName( ) “住在 “ gs- getAddress( ) endl; delete gs; return 0; 程序的输出结果是 _。 49 如下程序定义了 “单词 ”类 word,类中重载了运

24、算符,用于比较 “单词 ”的大小,返回相应的逻辑值。程序的输出结果为: After Sorting: Happy Welcome,请将程序补充完整。 #include iostream #include string using namespace std; class Word public: Word(strings): str(s) string getStr( )return str; _constreturn(str w str); friend ostream operator (ostream output, const Word w)output w str; return o

25、utput; private: string str; ; int main( ) Word wl(“Happy“), w2(“Welcome“); cout “After sorting: “; if(wl w2)cout w1 “ w2; else cout w2 w1: return 0; 50 请将下列模板类 Data补充完整。 template typename T class Data public: void put(T v)val=v; _get( )return val; /返回数据成员 val的值,返回类型不加转换 private: T val; ; 国家二级( C+)笔试

26、模拟试卷 178答案与解析 1 【正确答案】 C 【试题解析】 程序设计是指设计、编制和调试程序的方法和过程。软件测试的原则: 软件开发人员即程序员应当避免测试自己的程序。 应尽早地、不断地进行软件测试,而且必须反复地分阶段进行测试。 2 【正确答案 】 A 【试题解析】 二分法查找的前提条件是被查找的线性表必须是有序的。 3 【正确答案】 C 【试题解析】 栈是一种数据结构,是在某一端进行插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。在栈顶进行插入或删除操作,不需要修改栈底指针。栈的实现可以采用顺序存储也可以采用链表存储。 4 【正确答案】

27、D 【试题解析】 数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和在此集合中定义的若干关系来表示。数据的逻辑 结构在计算机存储空间中的存放形式称为数据的存储结构 (也称数据的物理结构 )。一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接等存储结构。但是不同的存储结构的数据的处理效率不同。 5 【正确答案】 C 【试题解析】 软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、

28、可重用性、可适应性、可移植性、可追踪性和可 互操作性并且满足用户需求的软件产品。 6 【正确答案】 C 【试题解析】 软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性。 7 【正确答案】 B 【试题解析】 为了使模块尽可能独立,要求模块的内聚程度尽量高,且各模块之间的耦合程度要尽量弱。 8 【正确答案】 D 【试题解析】 软件是一系列按照特定顺序组织的计算机数据和指令的集合。软件并不只是包括在计算机上运行的程序,与这些程序相关的文档也被认为是软件的一部分。简单地说,软件就是程序加文 档和数据的集合体。 9 【正确答案】 D 【试题解析】 数据独立性是指建

29、立在数据的逻辑结构和物理结构分离的基础上,用户以简单的逻辑结构操作数据而无须考虑数据的物理结构,转换工作由数据库管理系统实现。数据独立性分为数据的物理独立和数据的逻辑独立。 10 【正确答案】 C 【试题解析】 实体之间的关系模型包括层次模型、网状模型和关系模型,其中,层次模型可以由树状结构来表示。 11 【正确答案】 B 【试题解析】 内联函数是 inline,当程序中出现对该函数的调用时,编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参代替形参。一般在程序运行时不再进行函数调用,代替了 C语言中的宏定义。 12 【正确答案】 A 【试题解析】 在类的定义中,类的数据成员和成员函

30、数可在类中声明,在类中或者类外定义均可。在类外定义成员函数时,要加上类名和域作用符,类名 :为前缀,在类中的成员的默认访问权限为私有的。 13 【正确答案】 D 【试题解析】 在通常情况下,派生类和基类的构造函数的执行顺序为:先执行基类的构造函数,然后执行派生类的构造函数;当撤销派生类对象时,先 执行派生类的析构函数,随后再执行基类的析构函数。 14 【正确答案】 A 【试题解析】 运算符重载不能改变运算符原有的优先级、结合特性和操作数个数。运算符重载不能创建新的运算符,运算符重载可以改变运算符参数的类型和返回值的类型。 15 【正确答案】 C 【试题解析】 函数模板定义的一般格式为: Tem

31、plate typename类型参数返回类型 函数名 (模板形参表 )函数体 16 【正确答案】 B 【试题解析】 setw(n)设置域宽为 n,用于输出。 17 【正确答案】 D 【试题解析】 在 C+中,变量标识符必须是以大小写字母、下画线开始,由数字或者字母下画线等组成的一个字符串,其中 C+关键字不能作为标识符,不能包含 -、 +、 *、 /等运算符号。 C+变量区分大小写,所以 Retrun不是关键字,而是一个合法变量; swith为关键字,所以不能定义为标示符。 18 【正确答案】 D 【试题解析】 根据题干可知,分别为整型、浮点型和长整型。 19 【正确答案】 B 【试题解析】

32、for(int i=50; i 1; -i), i为 50 2,故打印 49个 *。 20 【正确答案】 A 【试题解析】 赋值运算符不能将 int地址 (指针 )赋值给 int变量。 21 【正确答案】 C 【试题解析】 静态数据成员在类中声明,对它的访问可通过类名进行。 22 【正确答案】 B 【试题解析】 基类被派生类公有派生时,可以在派生类中访问基类中的公有数据成员和保护数据成员,私有数据成员在派生类中不能被直接访问,保护数据成员和私有数据成员均不能被派生类对象直接访问。如果一个类的数据成员没有被限定就会被默认为私有数据成员,私有数 据成员不能直接被类对象访问。 23 【正确答案】 A

33、 【试题解析】 非成员函数重载的运算符的显示调用格式为: aa operatorbb,其中 是重载运算符号。 24 【正确答案】 A 【试题解析】 在函数模板定义中,类型参数不能参与运算。 25 【正确答案】 D 【试题解析】 在文件中偏移定位时的初始值 ios:base_beg将指针定位在文件的开始位置; ios:base_cur将指针定位在文件的当前位置; ios:base_end将指针定位在文件的结束位置。从当前位置 往后偏移量为正,从当前位置往前偏移,偏移量为负。 26 【正确答案】 B 【试题解析】 当类中的数据成员有指针时,必须使用深层复制构造函数,否则会发生指针悬挂。在进行函数析

34、构时,会出现指针丢失现象。 27 【正确答案】 C 【试题解析】 无参构造函数调用和复制构造函数调用的 Demo a, d;调用 2次无参构造函数 Demo( ),在 Demo userCore(Demo B) Demo c(B) ; return c; 函数中, Demo b调用一次复制构造函数, Demo c(B) 调用一次 复制构造函数,在函数返回值时还要调用一次复制构造函数,故 Demo(const Demo x)的调用次数为 3次。 28 【正确答案】 A 【试题解析】 类的静态数据成员和友元函数,不能拥有 this指针 29 【正确答案】 A 【试题解析】 当创建派生类对象时,首先

35、调用基类的构造函数,最后调用派生类的构造函数。 30 【正确答案】 B 【试题解析】 在私有继承方式下,所有的类成员都继承为私有成员。 31 【正确答案】 D 【试题解析】 派生类的声明格式如下: class派生类名: 继承方式 基类名 派生类的数据成员和成员函数 virtual为虚继承,是继承方式,所以应该放在派生类名后面。 32 【正确答案】 B 【试题解析】 在成员函数重载中,一元函数重载在函数声明中可以没有任何形参,操作数就是对象本身;但是作为后缀运算符重载时,则必须在形参中添加参数。 33 【正确答案】 B 【试题解析】 只有在目标声明中, typename和 class才可以相互替

36、换,即typename可以被 class替换,而有的 class,不一定能被 typename替换。 34 【正确答案】 D 【试题解析】 输出流控制中,如果没有指定对齐方式,则默认为左对齐、右填充, CSum类使 “ ”运算符出栈,并将输出控制为宽度为 5, cout setfill(*) 8;执行时就打印 8*,然后执行 cout y;打印 8,故答案为 D。 35 【正确答案】 C 【试题解析】 堆栈组织元素的原则是 “先进后出 ”, Stack s2(s1);使用复制构造函数新建 s2,里面有元素 1, 2, 3, 4。 for(i=1; i 3; i+)cout s2 pop( ),

37、 ;使栈顶元素 4, 3出栈, s2 push(6)将 6压入栈顶。 while(!s2 isEmpty( ) cout s2 pop( ) , ;使元素 6, 2, 1出栈,故答案为 4, 3, 6, 2, 1。 36 【正确答案】 14 【试题解析】 在二叉树中,度为 0的结点数是度为 2的结点数加 1,故二叉树中结点数的总和为度为 0的结点数、度为 1的结点数及度为 2的结点数三者相加,得出结果为 14个结点。 37 【正确答案】 逻辑判断 【试题解析】 绘制流程图时对实体的描述用椭圆形表示、 行动方案用矩形表示、问题用菱形表示、箭头代表流动方向。 38 【正确答案】 需求分析 【试题解

38、析】 需求分析阶段的工作主要包括需求获取、需求分析、编写需求规格说明书和需求评审 4个方面,产生的主要文档为软件需求规格说明书,它可以为用户、分析人员和设计人员之间的交流提供方便,直接支持目标软件系统的确认,也可作为控制软件开发进程的依据。 39 【正确答案】 多对多 【试题解析】 一名学生可选择多门课程,一门课程也可由多名学生选择,因此是多对多联系。 40 【正确答案】 身份证号 【试 题解析】 主关键字是表中区别不同记录的标识,在该表中只有身份证号能起到这个作用,所以用其作为主关键字。 41 【正确答案】 double 【试题解析】 同类数据进行四则运算类型不变。 42 【正确答案】 15

39、 43 【正确答案】 *(p+i) 【试题解析】 指针 p指向数组首地址, p+i指向第 i个元素地址,则 *(p+i)表示第i个元素的值。 44 【正确答案】 size-2 【试题解析】 函数体的基本功能是将大小为 size的数组 a的首尾元素进行交换。交换一次后,未交换部分 的首元素地址为 a+1,未交换的元素个数为 size-2。 45 【正确答案】 this- data=data; 【试题解析】 this- data=data; 46 【正确答案】 int Sample:data=0; 47 【正确答案】 int CalArea(size, height) 48 【正确答案】 Unknown住在 Shanghai 【试题解析】 首先调用构造函数将 name初始化为 “Feifei”,再通过继承的getName( )函数调用构造函数将 name更改为 “Unknown”输出;直接输出 “住在 ”,再调用 getAddress( )函数输出 Shanghai。 49 【正确答案】 bool operator (Word w) 【试题解析】 重载关系运算符 “ ”为成员函数,得到逻辑类型结果,且只要一个参数。 50 【正确答案】 T 【试题解析】 定义成员函数需要模板参数声明,使函数具有通用的类型以便被替换。

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

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

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