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

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

1、国家二级( C+)笔试模拟试卷 260及答案与解析 1 下列关于软件测试的描述中正确的是 ( )。 ( A)软件测试的目的是证明程序是否正确 ( B)软件测试的目的是使程序运行结果正确 ( C)软件测试的目的是尽可能多地发现程序中的错误 ( D)软件测试的目的是使程序符合结构化原则 2 软件开发的结构生命周期法的基本假定是认为软件需求能做到 ( A)严格定义 ( B)初步定义 ( C)早期冻结 ( D)动态改变 3 数据库设计包括两个方面的设计内容,它们是 ( )。 ( A)概念设 计和逻辑设计 ( B)模式设计和内模式设计 ( C)内模式设计和物理设计 ( D)结构特性设计和行为特性设计 4

2、 算法分析的目的是 ( A)找出数据结构的合理性 ( B)找出算法中输入和输出之间的关系 ( C)分析算法的易懂性和可靠性 ( D)分析算法的效率以求改进 5 已知一个有序线性表为 (13, 18, 24, 35, 47, 50, 62, 83, 90, 115, 134),当用二分法查找值为 90的元素时,查找成功的比较次数为 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 9 6 下面描述中错误的是 ( )。 A) 系统总体结构图支持软件系统的详细设计 B) 软件设计是将软件需求转换为软件表示的过程 C) 数据结构与数据库设计是软件设计的任务之一 D) PAD图是软件详细设计

3、的表示工具 7 若表 R在排序前已按键值递增顺序排列,则 _ 算法的比较次数最少。 ( A)直接插入排序 ( B)快速排序 ( C)归并排序 ( D)选择排序 8 下列陈述中正确的是 _。 ( A)二叉树是度为 2的有序树 ( B)二叉树中结点 只有一个孩子时无左右之分 ( C)二叉树中必有度为 2的结点 ( D)二叉树中最多只有两棵子树,并且有左右之分 9 一棵二叉树中共有 70个叶子结点与 80个度为 1的结点,则该二叉树中的总结点数 ( A) 221 ( B) 219 ( C) 231 ( D) 229 10 下面关于构造函数和析构函数的描述,错误的是 ( )。 ( A)析构函数中调用虚

4、函数采用静态联编 ( B)对虚析构函数的调用可以采用动态联编 ( C)当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数 ( D)构造函数可以声明为虚函 数 11 有以下程序; #include iostream using namespace std; class R public: R(int r1,int r2) R1=r1; R2=r2; void print(); void print () const; private: int R1, R2; ; void R:print () cout R1 “,“ R2endl; void R:print() const cout

5、R1 “, “ R2 endl; int main () R a(5,4); const R b(20,52); b.print(); return 0; 执行后的输出结果是 ( A) 5,4 ( B) 20,52 ( C) 0,0 ( D) 4,5 12 下列有关继承 和派生的叙述中,正确的是 ( )。 ( A)如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员 ( B)派生类的成员函数可以访问基类的所有成员 ( C)基类对象可以赋值给派生类对象 ( D)如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类 13 所有在函数中定义的变量及函数的形式参数,都属于 ( )

6、。 ( A)全局变量 ( B)局部变量 ( C)静态变量 ( D)常量 14 C+语言建立类族是通过 ( )。 ( A)类的嵌套 ( B)虚函数 ( C)类的继承 ( D)抽象类 15 变量定义如下; int *p; 则下列不同于 *p=*p+1; 的是 ( )。 ( A) *p+; ( B) + *p; ( C) *p+=1; ( D) +( *p); 16 假定 MyClass为一个类,则执行 myClass a, b(2), *p;语句时,自动调用该类构造函数 ( )次。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 17 下列程序的运行结果为 ( )。 #include io

7、stream.h void main() int a=2; int b=a+1; cout a/b endl; ( A) 0.66667 ( B) 0 ( C) 0.7 ( D) 0.66666666 18 定义一个具有 10个元素的整型数组,应当使用语句是 _。 ( A) int a10 ( B) iht a2, 5 ( C) int a ( D) int*a10: 19 关于动态联编的下列叙述中, _ 是错误的。 ( A)动态联编是以虚函数为基础的 ( B)动态 联编调用虚函数操作是指向对象的指针或引用 ( C)动态联编是在运行时确定所调用的函数代码的 ( D)动态联编是在编译时确定操作函

8、数的 20 下面的概念中,不属于面向对象方法的是 _ 。 ( A)自顶向下 ( B)继承 ( C)类 ( D)对象 21 sizeof(float)是 ( A)一个双精度型表达式 ( B)一个整型表达式 ( C)一种函数调用 ( D)一个不合法的表达式 22 下列关于 C+函数的描述中正确的是 ( )。 ( A)主函数是程序的入口,它由用户定义的函数调用 ( B)函数在调用之前必须先被声明 ( C)每个用户定义函数只能被其他函数调用一次 ( D)函数是 C+中面向对象程序设计框架的基本组成单元 23 关于 getline()函数的下列描述中, ( )是错误的。 ( A)该函数是用来从键盘上读取

9、字符串的 ( B)该函数读取的字符串长度是受限制的 ( C)该函数读取字符串时,遇到终止符时便停止 ( D)该函数中所使用的终止符只能是换行符 24 下列程序的输出结果是 #include iostream.h class Myclass public : Myclass( int i=0, int j=0) x=i; y=j; void show( )cout “x=“ x “ “ “y=“ y endl; void show( )constcout “x=“ “ “ “y=“ y endl; privated: int x; int y; ; void main( ) Myclass my

10、 l (3,4); const my2(7,8); my l show( ); my2 show( ); ( A) x=4, y=3; x=7, y=8 ( B) x=3, y=4; x=7, y=8 ( C) x=7, y=8; x=4, y=3 ( D) x=8, y=7; x=7, y=8 25 考虑函数原型 void test(int a,int b=7,char z=*),下面的函数调用中,属于不合法调用的是 ( A) test(5); ( B) test(5,8); ( C) test(6,#; ( D) test(0,0,*); 26 下列关于 C+运算符结合性的说法中,正确的是

11、 ( )。 ( A)赋值运算符是左结合的 ( B)复合运算符是左结合的 ( C)单目运算符是左结合的 ( D)双目算术运算符是左结合的 27 有以下程序: #include iostream #include math using namespace std; class point private: double x; double y; public: point(double a,double b) x=a; y=b; friend double distance(point a,point b) ; ; double distance(point a,point b) return s

12、qrt (a.x-b.x)* (a.x-b.x)+(a.y-b.y)*(a.y-b.y); int main ( ) point pl(1,2); point p2 (5, 2); cout distance (pl,p2) end1; return 0; 程序运行后的输出结果是 ( )。 ( A) 1 ( B) 5 ( C) 4 ( D) 6 28 下列程序中划线处正确的语句是 ( )。 # include iostream using namespace std; class Base public: void fun()cout “Base: fun“ endl; ; class Der

13、ived: public Base void fun() _ 显式调用基类的函数 fun() cout “D ( A) fun(); ( B) Base fun(); ( C) Base:fun(); ( D) Base- fun(); 29 在位运算中 ,操作数每左移一位,其结果相当于 ( A)操作数乘以 2 ( B)操作数除以 2 ( C)操作数除以 4 ( D)操作数乘以 4 30 下面程序的运行结果为 #include iostream.h class A int num; public: A(int i)num=i; A(A void print( )constcout a “; ;

14、 void main( ) example X(3); ( A) 22 ( B) 43 ( C) 42 ( D) 32 32 以下叙述中不正确的是 ( A)在 C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 ( B)在 C的函数中,最好使用全局变量 ( C)在 C中, 形式参数只是局限于所在函数 ( D)在 C中,函数名的存储类别为外部 33 不论派生类以何种方法继承基类,都不能使用基类的 ( )。 ( A)公有成员 ( B)私有成员 ( C)保护成员 ( D)公有成员和保护成员 34 有如下程序: #include iostream using namespace std

15、; class Apublic: static int a; void init()a=1; A(int a=2)init(); a+; ; int A:a=0; A obj; int main() cout obj.a; return 0; 运行时输出的结果是 ( A) 0 ( B) 1 ( C) 2 ( D) 3 35 下列运算符中,不能被重载的是 ( A) class Base public: _ void fun( )cout 1; ; class Derived: public Base pbulic: void fubn( )cout 2; ; int main( ) Base*P

16、=new Derived; Pfun( ); delete P; return 0; 42 假设 int a 1, b 2;则表达式 a b的值为 _。 43 若要访问指针变量 p所指向的数据,应使用表达式 _。 44 若有以下程序: #include iostream using namespace std; class Base public: Base() x=0; int x; ; class Derived1: virtual public Base public: Derived1() x=10; ; class Derived2: virtual public Base publ

17、ic: Derived2() x=20; ; class Derived: public Derived1, protected Derived2 ; int main() Derived obj; cout obj.x end1; return 0; 该程序运行后的输出结果是【 】。 45 C+语言中表示双精度浮点数的关键字是【 】。 46 C+语言程序的注释可以出现在程序中的任何地方,一个注释以【 】作为开始和结束的标记。 47 类模板不同于函数模板,类模板只可用【 】型参数。 48 main函数中发生编译错误的语句是【 】。 # include iostream. h class A p

18、ublic: int a; const int b: A() :a(10) ,b(20) void fun() const cout “a=“ a “tb=“ b end1; ; void main( ) A obj1; const A * ptr = new A: ptr = ptr- a=lO0; ptr- fun(), 49 int k=10; float a=3.5, b=6.7, c; c=a+k%3*(int)(a+b)%2/4;则 c的值【 】。 50 下列程序的输出 结果是【 】。 #inClude iostream using namespace std; class Tes

19、t public: Test() cnt; Test()cnt; static int Count() return cnt; private: static int cnt; ; int Test:cnt 0; int main() cout Test:Count() ”; Test t1, t2; Test*pT3 new Test; Test*pT4 new Test; cout Test:Count() ; delete pT4; delete pT3; cout Test:Count() endl; return 0; 国家二级( C+)笔试模拟试卷 260答案与解析 1 【正确答案

20、】 C 【试题解析】 软 件测试是为了尽可能多地发现程序中的错误,尤其是至今尚未发现的错误。 2 【正确答案】 C 【试题解析】 软件需求经过分析阶段后,通过软件需求说明书表示出来,后面的开发工作以此为基础进行,故结构生命周期法中需假定软件需求确定后一般不再改变,即 “早期冻结 ”。 3 【正确答案】 A 【试题解析】 数据库设计包括数据库概念设计和数据库逻辑设计两个方面的内容。 4 【正确答案】 D 【试题解析】 算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数量级,常用时间复 杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执

21、行效率。 5 【正确答案】 B 【试题解析】 根据二分法查找需要两次: 首先将 90与表中间的元素 50进行比较,由于 90大于 50,所以在线性表的后半部分查找: 第二次比较的元素是后半部分的中间元素,即 90,这时两者相等,即查找功。 6 【正确答案】 A 7 【正确答案】 A 8 【正确答案】 D 9 【正确答案】 B 【试题解析】 在任意一棵二叉树中,度为 0的结点 (也就是叶子结点 )总比度为 2的结点多一个。由于本题中的二叉树有 70个叶子结点,所以有 69个度为 2的结点。该二叉树中总结点数为:度为 2的结点数十度为 1的结点数 +度为 0的结点数 =69+80+70=219。

22、10 【正确答案】 D 11 【正确答案】 B 【试题解析】 使用 const关键字修饰的对象成为常对象,题中对象 b 被声明为类R的常,对象。使用 const关键字说明的成员函数称为常成员函数,类 R中用const重载了函数 print()。在使用常对象和常成员函数时应注意的是: const是函数类型的一个组成部分,因此在常成员函 数部分也要带 const关键字;常成员函数不能更新对象的数据成员,也不能调用该类中没有用 const修饰的成员函数;如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他的成员函数; const关键字可以参与区分重载函数。本题中, b为类

23、R的常对象,通过 b只能调用类 R的常成员函数 print()输出 20,52。 12 【正确答案】 D 【试题解析】 如果派生类私有继承基类,不能访问基类中的私有成员,所以选项A)、 B)是错误的。派生类是对基类的具体化,所以选项 C)错误。如果派生类没有实 现基类的一个纯虚函数,则该派生类是一个抽象类,即选择选项 D)。 13 【正确答案】 B 【试题解析】 全局变量是在所有函数定义、类定义和程序块之外声明的变量,局部变量是在某个函数定义、类定义或程序块之内声明的变量。用关键字 Static声明的局部变量称为静态变量,故正确答案为 B 项。 14 【正确答案】 C 【试题解析】 类通过继承

24、实现类的层次结构。 15 【正确答案】 A 【试题解析】 *p=*p+1;是将指针变量 p所指向的存储单元的值加 1,然后放入p 所指向的存储单元中。而选项 A中最后是将 p 的值加 1,即移动一个单位的存储单元。 16 【正确答案】 A 17 【正确答案】 B 18 【正确答案】 A 19 【正确答案】 D 20 【正确答案】 A 【试题解析】 自顶向下是结构化程序设计的特征。 21 【正确答案】 B 【试题解析】 该函数用于数据类型和变量。注意: sizeof 操作符不能用 于函数,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、 void类型等。 2

25、2 【正确答案】 B 23 【正确答案 】 D 24 【正确答案】 A 【试题解析】 在 Myclass类中定义了两个同名函数 show,其中一个是常成员函数。在 main 函数中定义了两个对象 myl, my2,其中对象 my2 是常对象。这两个对象调用成员函数 show 时,通过对象 myl 调用的是没有用 const修饰的一般成员函数,而通过对象 my2调用的是 const修饰的常成员函数。 25 【正确答案】 C 【试题解析】 本题考核函数的调用。题中函数声明带有默认参数,那么在 C选项的调用中,将会把字符型实参 #赋值给整型形参 b,这不符合参数传递规 则。 26 【正确答案】 D

26、【试题解析】 运算符的结合方式有两种:左结合和右结合。左结合表示运算符优先与其左边的标识符结合进行运算,如加法:右结合表示运算符优先与其右边的标识符结合,如单目算术运算符 +和 。赋值运算符、复合运算符和单目运算符都是右结合的。双目算术运算符是左结合的,所以只有选项 D是正确的。 27 【正确答案】 C 【试题解析】 本题考核友元函数的应用。分析程序: 类 point中定义了两个私有成员 x和 y,以及一个友元函数 distance()。从而,函数 distance可以访问类 point中的任何成员。 在函数 distance()中,返回值为 sqrt(a.x-b.x)*(a.x-b.x)+(

27、a.y-b.y)*(a.y-b.y)。由此可知,函数 distance()的功能是计算 a、 b 两点之间的距离。 在主函数中,先定义两点: p1(1, 2)和 p2(5, 2)。然后调用函数 distance()计算两点之间的距离为 4,所以程序最后输出为 4。 28 【正确答案】 C 29 【正确答案】 A 【试题解析】 左移运算符 “ ”是双目运算符。其功能把 “ ”左边的运算数的各二进位全部左移若干位,由 “ ”右边的数指定移动的位数,高位丢弃,低位补 0。左移 1位,相当于该数乘以 2。 30 【正确答案】 C 【试题解析】 本题考查考生对拷贝构造函数的掌握。因为 +运算是右结合的,

28、所以在使用 a对 b赋值时, b的 num变为 1而 a的 num变为 2(先赋值再自加 )。 31 【正确答案】 C 【试题解析】 “+”是右结合的,所以先赋值为 3,最后输出 3+1;常成员函数只有常对象才能调用,所以输出 2。 32 【正确答案】 B 【试题解析】 本题也是考查 C语言中函数的概念及其使用。函数调用时,值可以双向传递,并没有限制使用全局变量还是局部变量,需要根据程序的逻辑需要进行选择。 33 【正确答案】 B 【试题解析】 基类的私有成员不能够在派生类中直接访问。 34 【正确答案】 B 【试题解析】 本题是一道陷阱题,看似考查类的静态成员变量,实际考查的是:变量作用域的

29、屏蔽效应。在 C+中,当标识符的作用域发生重叠时,在一个函数(或块 )中声明的标识符可以屏蔽函数 (或块 )外声明的标识符或全局标识符。本题从行 “class A“到行 “int A:a=0; ”都是类 A的声明部分。行 “A obj; ”声明了一个类 A的全局对象 obj,由于没指定构造参数,所以构造时构造函数的形参 a取默认值 2。构造函数中首先调用了 init函数,将静态成员变量 a赋为 1,然后将 a增 1。许多考生此时会很自然地认为是将类 A的静态成员变量 a增 1了,从而导致选择 C这个错误答案。其实,此时静态成员变量 a被构造函数的形参 a所屏蔽,所以 a+改变的是形参 a的值,

30、对静态成员变量 a没有影响,其值还是被 init函数所改成的值 1。故本题应该选择 B。 35 【正确答案】 C 【试题解析】 本题 考查的知识点是:运算符重载。在 C+中,只有 .、 .*、 -*、 :、 ?:这五个运算符不能重载。故本题应该选择 C。 36 【正确答案】 19 【试题解析】 二叉树具有如下性质:在任意一棵二叉树中,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。根据题意,度为 2的节点为 18 个,那么,叶子结点就应当是 19个。 37 【正确答案】 123.45* 123.45* 123.45 38 【正确答案】 谓词演算 【试题解析】 关系数据库中的关系演算

31、包括元组关 系演算和域关系演算。二者都是由原子公式组成的公式。而这些关系演算都是以数理逻辑中的谓词演算为基础的。 39 【正确答案】 格式化模型 【试题解析】 层次模型与网状模型属于格式化模型。 40 【正确答案】 0, 0, 0, 1 41 【正确答案】 virtual 【试题解析】 本题考查虚函数的概念。在 C+中,一个基类的指针可以用于指向它的派生类对象。而且通过这样的指针调用虚函数时,被调用的是该指针实际指向的对象类的那个重定义版本。在本题中,通过对象指针 P调用的是派生类中重定的。 fun函数, 那么基类中的 fun只有是虚函数才能满足要求。 42 【正确答案】 2 【试题解析】 因

32、为运算符和都是右结合的且优先级高于双目运算符,所以上式的运算顺序为先 a, b,再 a b,最后 a自加 1。 43 【正确答案】 *p 【试题解析】 此题考查的是指针。指针使用两种特殊的运算符 “: *”和 “&”。“&”用于返回其操作对象内存地址; “*”用于返回其操作数所指对象的值。 44 【正确答案】 20 45 【正确答案】 double 【试题解析】 C+语言中基本的数据类 型关键字,有 int, float, double。 46 【正确答案】 /* */ 【试题解析】 C+语言程序的注释可以出现在程序中的任何地方,一个注释以“/*”开始,以 “*/”为结束。 47 【正确答案】

33、 类 【试题解析】 本题考查的是类模板的定义, C+语言中模板分为两种:类模板和函数模板,类模板只能用于类型参数,函数模板可以重载。 48 【正确答案】 ptr- a=100; 【试题解析】 本题考察的是 const的使用。 const修饰的是指针变量的值,及指针本身是可变的,但 指针所指对象的值是常量,即 ptr- a是不能被改变的。 49 【正确答案】 3.5 【试题解析】 运算符的优先级概念,式中要先算 (a+b)的值,再算强制类型变换, *、 /、 %是同级的要从左到右计算,最后算加法和赋值。 50 【正确答案】 42 【试题解析】 本题考核静态数据成员与静态成员函数的定义与使用方式。 C中,提出静态成员的目的是为了解决数据共享的问题。一个给定类的每个对象都有类中定义的所有数据的自己的拷贝,如果在类中将数据成员用 static说明为静态的,则这个类成员只有一个拷贝并 被这个类的所有对象所共享。类 Test的静态成员 cnt,初始值为 0,所以执行语句 “cout Test:Count() ; ”后输出 0。然后程序创建了两个对象 t1 和 t2,以及两个对象指针并调用 new 来初始化指针,所以 cnt的值变成了 4(即此时输出为 4)。然后程序将对象指针 pT4、 pT3 delete了,此时将分别调用析构函数将 cnt的减 1,所以最后输出 cnt的值为 2。

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

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

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