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

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

1、国家二级( C+)笔试模拟试卷 110及答案与解析 1 以下各特点中,属于算法的基本特征的是 ( )。 ( A)不可行性 ( B)确定性 ( C)拥有部分的情报 ( D)无穷性 2 考虑一年四季的顺序关系时,下列数据元素前者不是后者前件的是 ( )。 ( A)春、夏 ( B)夏、秋 ( C)秋、冬 ( D)冬、秋 3 下列关于线性表叙述中,不正确的是 ( )。 ( A)可以有几个节点没有前件 ( B)只有一个终端节点,它无后件 ( C)除根节点和终端节点,其他节点都有且只有一个前件,也 有且只有一个后件 ( D)线性表可以没有数据元素 4 下面关于对象概念的描述中错误的是 ( )。 ( A)任

2、何对象都必须有继承性 ( B)对象是属性和方法的封装体 ( C)对象间的通信靠消息传递 ( D)操作是对象的动态属性 5 下列不属于软件工程过程的基本活动的是 ( )。 ( A)软件规格说明 ( B)软件开发 ( C)软件确认 ( D)软件需求分析 6 软件测试方法中属于静态测试方法的是 ( )。 ( A)黑盒法 ( B)逻辑覆盖 ( C)错误推测 ( D)人工检测 7 数 据库系统的核心是 ( )。 ( A)数据库 ( B)数据库管理系统 ( C)数据模型 ( D)软件工具 8 设有 n元关系 R及 m元关系 S,它们分别有 p、 q个元组,则关系 R与 S经笛卡尔积记为 RS,该关系是一个

3、 n+m元关系,那么其元组个数是 ( )。 ( A) n*m ( B) n+m ( C) p+q ( D) p*q 9 数据库设计包括两个方面的设计内容,它们是 ( )。 ( A)概念设计和逻辑设计 ( B)模式设计和内模式设计 ( C)内模式设计和物理设计 ( D)结构特性设计和行为特性设计 10 在顺序表 (3, 6, 8, 10, 12, 15, 16, 18, 21, 25, 30)中,用二分法查找关键码值 11,所需的关键码比较次数为 ( ) ( A) 2 ( B) 3 ( C) 4 ( D) 5 11 C+语言是从早期的 C语言逐渐发展演变而来的。与 C语言相比,它在求解问题方法上

4、进行的最大改进是 ( )。 ( A)面向过程 ( B)面向对象 ( C)安全性 ( D)复用性 12 以下非法的赋值表达式是 ( )。 ( A) n=(i=2, +i); ( B) j+; ( C) +(i+1); ( D) x=j 0; 13 下面程序的输出结果是 ( )。 #include iostream using namespace std; int main() int a=2, b=-1, c=2; if(a b) if(b 0) c=0; else c+=1; cout c end1; return 0; ( A) 0 ( B) 1 ( C) 2 ( D) 3 14 for(i

5、nt x=0,y=0;!x&y =5; y+)语句执行循环的次数是 ( )。 ( A) 0 ( B) 5 ( C) 6 ( D)无数次 15 C+语言的跳转语句中,对于 break和 continue说法正确的是 ( )。 ( A) break语句只应用于循环体中 ( B) continue语句只应用于循环体中 ( C) break 是无条件跳转语句, continue不是 ( D) break和 continue的跳转范围不够明确,容易产生问题 16 在 “int a=10,*p=&a; ”语句中, p的值是 ( )。 ( A) 10 ( B)变量 p的地址 ( C)变量 a的地址 ( D)

6、随机数 17 在重载一个运算符函数时,其参数表中没有任何参数,这说明该运算符是( )。 ( A)一元非成员运算符 ( B)一元成员运算符 ( C)二元非成员运算符 ( D)二元成员运算符 18 考虑函数原型 void test(int a,int b=7,char z=*),下面的函数调用中,属于不合法调用的是 ( )。 ( A) test(5); ( B) test(5, 8); ( C) test(6, #): ( D) test(0, 0, *); 19 下面有关重载函数的说法中,正确的是 ( )。 ( A)重载函数必须具有不同的返回值类型 ( B)重载函数形参个数必须不同 ( C)重载

7、函数必须有不同的形参列表 ( D)重载函数名可以不同 20 假定 MyClass为一个类,执行 “MyClass a3, *p2; ”语句时会自动调用给类的构造函数 ( )次。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 21 对于下面定义的类 MyClass,在函数 f()中将对象成员 n的值修改为 50的语句应该是 ( )。 class MyClass public: MyClass(int i) n=i; void SetNum(int x) n=X; private: int n; ; int f() MyClas ( A) ptr- SetNum(50) ( B) Set

8、Num(50) ( C) ptr- n=50 ( D) *ptr- SetNum(50) 22 下面程序的输出结果是 ( )。 #include iostream using namespace Std; int main() int x6=1, 3, 5, 7, 9, 11, *k, *s; k=x; s=&k; cout *(k+) “, ” *s end1; return 0; ( A) 3, 3 ( B) 1, 1 ( C) 3, 5 ( D) 3, 1 23 有以下程序: #include iostream using namespace Std; int main( ) int a

9、 = 15, b = 21, m = 0; switch(a%3) case 0: m+; break; case 1: m+; switch(b%2) ( A) 1 ( B) 2 ( C) 3 ( D) 4 24 有以下程序: #include iostream using namespace std; int main() int x=15; while(x 10&x 50) x+; if(x/3) x+; break; cout x end1; return 0; ( A) 15 ( B) 16 ( C) 17 ( D) 18 25 若有下面的说明和定义: struct test cha

10、r m2; float m3; union uu char u15; float u2; ua; MyStruct; 则 sizeof(MyStruct)的值是 ( )。 ( A) 10 ( B) 11 ( C) 12 ( D) 9 26 有如下程序: #include iostream using namespace std; class XX protected: int k; public: XX(int n=5): k(n) XX() cout “XX“; virtual void f() const=0; ; inline void XX: f() ( A) 28XX ( B) 28

11、YYXX ( C) -33XX ( D) -33XXYY 27 已知类 Myst有一个只需要一个 double型参数的构造函数,且将运算符 “-”重载为 友元函数。要使语句序列 Myst x(3.2), y(5.5), z(0.0); z=8 .9-y; y=x-6 .3; 能够正常运行,运算符函数 operator-应该在类中声明为 ( )。 ( A) friend Myst operator-(Myst&, Myst&); ( B) friend Myst operator-(Myst, Myst); ( C) friend Myst operator-(Myst, Myst&); ( D

12、) friend Myst operator-(Myst&, Myst); 28 在下列程序画线处填入的正确语句是 ( )。 #include iostream using namespace std; class Base public: void fun() cout“Base: fun“, end1; ; class Derived: public Base void fun() _ /显式调 ( A) fun(); ( B) Base.fun(); ( C) Base: fun(); ( D) Base- fun(); 29 有以下程序: #include iostream using

13、 namespace std; class BASE private: char c; public: BASE(char n): c(n); virtual BASE() cout c; ; class DERIVED: public BASE char c; p ( A) XY ( B) YX ( C) X ( D) Y 30 在进行任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态。其中只能用于检测输入流状态的操作函数名称是 ( )。 ( A) fail ( B) eof ( C) bad ( D) good 31 以下程序的执行结果是 _。 #include iostre

14、am.h class Sample int n; public: Sample() Sample(int m)n+m; ) int&operator-(int) n- return n; void disp () cout “n= “ n end1; void main () Sample s 32 重载的流运算符函数经常定义为类的 _函数。 33 设有以下变量定义,并已赋确定的值, char w; int x; float y; double z;则表达式: w*x+z-y所求得的数据类型为 _。 34 转义字符序列中的首字符是 _字符。 35 以下程序的执行结果是 _。 #include

15、iostream.h class Sample int n; public: Sample() Sample (int i (n=i; ) void add (Sample &s1,Sample s2) this- n=sl.n+=s2.n; void disp() cout “ n=“ n end1: void main () 36 通常,将软件产品从提出、实现、使用维护到停止使用退役 的过程称为 _ 37 下面程序的输出结果为 _ #include iostream.h void main() cout “Hellob“; 38 含有纯虚函数的类称为 _。 39 以下程序的执行结果是 _

16、#include iostream.h void func(int); void main() int k=4 func(k) ; func(k) : cout end1; void func(int a) static int m=0; m+=a; cout m “ “; 40 C+语言提供的基本控制结构可以分为 3种类型:顺序结构、 _和循环结构。 41 符号常量可以用宏定义 define和 _来表示。 42 当执行 cin语句时,从键盘上输入每个数据后必须输入一个 _,然后才可以接着输入下一个数据。 43 以下 程序的执行结果是 _。 #include iostream.h class

17、CSample private: int n; static int k: public: CSample (int i) n=i; k+; ; voiddisp(); ; void CSample: disp() cout “n=“ n “, k=“ k endl int CSample: 44 C+语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取 _方式。 45 类 istream的成员函数 _从指定流中读取一个字符,成员函数 _和_从指定流中读取多个字符。 国家二级( C+)笔试模拟试卷 110答案与解析 1 【正确答案】 B 【试题解析】 作

18、为一个算法一般应具有几个基本特征:可行性、确定性、有穷性、拥有足够的情报,显然答案为 B。 2 【正确答案】 D 【试题解析】 在具有相同特征的数据元素集合 中,各个数据元素之间存在有某种关系,这种关系反映了该集合中数据元素所固有的一种结构。这种关系用前件和后件来描述。考虑一年四季的顺序关系时:春是夏的前件,夏是秋的前件,秋是冬的前件。 3 【正确答案】 A 【试题解析】 线性表要求只有一个根节点,它无前件,所以选项 A是错误的。线性表要求只有一个终端节点,它无后件,选项 B是正确的。线性表要求其他节点都有且只有一个前件,也有且只有一个后件,选项 C是正确的。一个线性表中可以没有数据元素,称为

19、空线性表,选项 D是正确。 4 【正确答案】 A 【试题解 析】 对象是面向对象方法中最基本的概念,对象可以用来表示客观世界中的任何实体,因此需要很清楚地理解对象的概念。因为客观世界的实体通常都具有静态和动态的属性,所以对象也具有静态和动态的属性。操作是对象的动态属性,属性是对象的静态属性。对象是属性和方法的封装体。面向对象是通过对象与对象间彼此的相互合作来推动的,对象间的相互合作需要传递消息。对象可以有继承性,但并不是任何对象都必须有继承性。 5 【正确答案】 D 【试题解析】 软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。软件工程的过程是将 软件工程的方法和工具综合起来,以达到

20、合理、及时地进行计算机软件开发的目的。它的基本活动包括软件规格说明、软件开发、软件确认、软件演进。 6 【正确答案】 D 【试题解析】 软件测试若从是否需要执行被测试软件的角度,可以分为静态测试和动态测试方法。若按照功能划分,可以分为黑盒测试和白盒测试。静态测试可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。逻辑覆盖属于白盒测试的主要方法。错误推测属于黑盒测试主要诊断方法之一。 7 【正确答案】 A 【试题解析】 数据库系统由这样 几部分组成:数据库 (数据 )、数据库管理系统 (软件 )、数据库管理员 (人 )、硬件平台、软件平台。这五个部分构成了一个数据库系统,而其中

21、数据库是整个系统的核心。 8 【正确答案】 D 【试题解析】 本题考核对笛卡儿积运算的掌握。笛卡儿积是两个关系的合并操作, p元组关系 R与 q元组关系 S经笛卡儿积后所得新关系的元组个数为 p*q。 9 【正确答案】 A 【试题解析】 模式设计和内模式设计是概念设计的两种方法。物理设计是根据特定的计算机系统,对数据的存储结构和存取方法进行设计,从而实现从逻辑结构到物理 结构的转换。从系统开发的角度来看,结构特性设计和行为特性设计是数据库应用系统所具有的两个特性。结构特性的设计:设计各级数据库模式 (静态特性 ):行为特性的设计:改变实体及其特性,决定数据库系统的功能 (动态特性 )。 10

22、【正确答案】 C 【试题解析】 二分法查找首先用想要查找的关键词 k与中间位置的节点关键词相比较,这个中间节点把线性表分成了两个子表,若比较结果相等,则查找完成:若不等,再根据 k与中间节点关键词的比较大小确定下一步查找哪个子表,这样递归下去,直到找到满足条件的节点,或者该线性表中没有这 样的节点。本题中第 1次和 15比较:第 2次和 7比较:第 3次和 10比较:第 4次和 12比较:比较后结束,没找到 11 【正确答案】 B 【试题解析】 C+起源于 C语言,它不仅保留了传统的结构化程序设计方法,又对流行的面向对象程序设计方法提供了完整的支持。 12 【正确答案】 C 【试题解析】 对于

23、任何一种赋值运算,其赋值号或复合赋值号左边必须是一个左值。左值是指具有对应的可由用户访问的存储单元,并且能够由用户改变其值的量。而在选项 C中赋值号对应的是表达式 “i+1”,不是一个左值,因此是非法的 赋值表达式。 13 【正确答案】 C 【试题解析】 本题常见的错误答案是:由于 a b(a=2,b=-1),所以程序进入 else分支执行语句 “c+=1; ”,最后得到答案 3。其实不然,本题考的知识点是 else与 if的配对问题。由于 else关键词总是与它前面最近的未配对的且可见的那个 if关键词配对,因此本题程序中的 else是与第 2个 if配对。由于 a b(a=2, b=-1)

24、,那么第 1个 if分支后的语句就不再执行,从而输出 c的值为 2。 14 【正确答案】 C 【试题解析】 本题主要是分析循环结束的 条件表达式 “!x&y =5”,由于 x的值为 0,那么: x永远为真,那么符合要求的 y的取值为 0-5,即循环共 6次。 15 【正确答案】 B 【试题解析】 break语句和 continue语句都是 C+的跳转语句。 break语句又称为跳出语句,它可以用在循环语句和 switch语句中。在 switch语句中, break用来使执行流程跳出 switch语句。在循环语句中, break语句用来使执行流无条件跳出本层循环体。 continue语句又称为继

25、续语句,它仅用在循环语句中。它的功能是:结束本次循环,接着进行 下一次是否执行循环的条件判定。 16 【正确答案】 C 【试题解析】 一个指针是一个特定类型数据的存储地址,由于指针 p已被赋值指向 a,所以 p的值就是整型变量 a的地址。 17 【正确答案】 B 【试题解析】 当把运算符重载为成员函数时,第 1操作数就是对象本身,即第 1操作数仅以 this指针的形式隐含在参数表中。因此,对于一元运算符的参数表是空的:对于二元运算符的参数表中只有一个参数,它代表第 2操作数。当把运算符重载为非成员函数时,由于没有隐含 this指针,因此所有的操作数必须出现在参数表中。 因此。对于一元运算符,参

26、数表中有一个参数,代表那个的操作数;对于二元运算符,参数表中有两个参数,分别代表第 1和第 2操作数。 18 【正确答案】 C 【试题解析】 在选项 C的调用中,将会把字符型实参 #赋值给整型形参 b,这不符合参数传递规则。 19 【正确答案】 C 【试题解析】 函数重载允许用同一个函数名定义多个函数。被重载的函数必须要有不同的形参列表。不可以根据函数返回值类型来重载函数。 20 【正确答案】 B 【试题解析】 C+在创建一个对象时,会自动调用类的构造函数,在构 造函数中可以执行初始化成员变量的操作。语句 “MyClassa3, *p2; ”创建了三个对象a0、 a1、 a2和 2个对象指针。

27、在创建对象数组 a时系统会调用类的构造函数。但在创建对象指针 p时,不调用类的构造函数,因为指针 p本身不定义类对象,而是定义了 p可以指向一个 MyClass的对象。 21 【正确答案】 A 【试题解析】 C+中定义对象后,可以使用 “.”和 “- ”运算符访问对象的成员。其中, “.”运算符适用于一般对象和引用对象,而 “- ”运算符适用于指针对象。本题定义的 ptr为指 针对象,使用运算符 “- ”访问其成员。 22 【正确答案】 D 【试题解析】 指针 k经过赋值后指向数组 x的首元素 xO。通过赋值语句“s=&k”,使得 *s也指向了数组的 x的首元素 xO,所以 *(k+)的值为

28、x1,即3。而 *s的值为 xO,即 1。 23 【正确答案】 A 【试题解析】 由于 a=15,所以 a%3的值为 0。程序进入第 1分支,执行“m+; ”,最后输出 m的值为 1。 24 【正确答案】 C 【试题解析】 本题考核选择语句与循环语句的嵌套。由程序可知,当 x=16时,满足 if条件表达式,进入 if分支,执行 “x+; break; ”,所以最后程序输出 x的值为 17。 25 【正确答案】 A 【试题解析】 C+中,联合体变量所占内存字节数与其成员中占字节数最多的那个成员相等。联合体中,浮点变量 u2占 4个字节,字符型数组 u1占 5个字节,所以联合体 u1占 5个字节。

29、整个结构体所占字节数为 10。 26 【正确答案】 A 【试题解析】 本题中, &p是一个对象指针,通过使用 new运算符变成了指向派生类 YY的对象指针。所以当建立并初始化对象指针 &p时,程序将 调用基类 XX的构造函数,给私有数据成员 k赋值 5。然后调用派生类 YY的常成员函数 f(),输出值 2和 8。最后调用基类 XX的析构函数输出 XX。 27 【正确答案】 B 【试题解析】 本题考核运算符的重载运算符作为类友元函数重载的格式为:friend类名 operator运算符 (形参表 ):同时形参表中不要使用类对象的引用。由此可知只有 B选项符合条件。 28 【正确答案】 C 【试题

30、解析】 本题主要考核作用域分辨符的使用。作用域分辨符 “:”可以用来限定要访问的成员所在类的名称。 29 【正确答案】 A 【试题解析】 在 C+中,由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。在此题的程序中,在主函数结束时,派生类 DERIVED对象 obj将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数,输出 X,然后调用基类的析构函数,输出Y。 30 【正确答案】 B 【试题解析】 C+中可以用文件流对象的下列成员函数来判别文件流的当前状态。 函数

31、is_open():判定流对象是否与一个打开的文件相联系,若是,返回true,否则返回 false。 函数 good():刚进行的操作成功时返回 true,否则返回 false。 函数 fail():与 good()相反,刚进行的操作失败时返回 true,否则返回 false。 函数 bad():如果进行了非法操作返回 true,否则返回 false。 函数 eof():进行输入操作时,若到达文件尾返回 true,否则返回 false。 其中, eof函数只能用于输入流操作。 31 【正确答 案】 程序的执行结果为: n 10 32 【正确答案】 友元 33 【正确答案】 双精度类型 34 【正确答案】 35 【正确答案】 n=7 n=5 n=7 36 【正确答案】 软件生命周期 37 【正确答案】 Hello 38 【正确答案】 抽象类 39 【正确答案】 48 40 【正确答案】 选择结构 41 【正确答案】 const 42 【正确答案】 空白符 43 【正确答案】 n=10, k=3 n-20, k=3 n=30, k=3 44 【正确答案 】 传地址 45 【正确答案】 get、 getline、 read

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

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

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