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

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

1、国家二级( C+)机试模拟试卷 2及答案与解析 一、选择题 1 下面关于算法的叙述中,正确的是 ( )。 ( A)算法的执行效率与数据的存储结构无关 ( B)算法的有穷性是指算法必须能在执行有限个步骤之后终止 ( C)算法的空间复杂度是指算法程序中指令 (或语句 )的条数 ( D)以上三种描述都正确 2 下列二叉树描述中,正确的是 ( )。 ( A)任何一棵二叉树必须有一个度为 2的结点 ( B)二叉树的度可以小于 2 ( C)非空二叉树有 0个或 1个根结点 ( D)至少有 2个根结点 3 如果进栈 序列为 A, B, C, D,则可能的出栈序列是 ( )。 ( A) C, A, D, B

2、( B) B, D, C, A ( C) C, D, A, B ( D)任意顺序 4 下列各选项中,不属于序言性注释的是 ( )。 ( A)程序标题 ( B)程序设计者 ( C)主要算法 ( D)数据状态 5 下列模式中,能够给出数据库物理存储结构与物理存取方法的是 ( )。 ( A)内模式 ( B)外模式 ( C)概念模式 ( D)逻辑模式 6 下列叙述中,不属于软件需求规格说明书的作用的是 ( )。 ( A)便于用户 ,开发人员进行理解和交流 ( B)反映出用户问题的结构,可以作为软件开发工作的基础和依据 ( C)作为确认测试和验收的依据 ( D)便于开发人员进行需求分析 7 下列不属于软

3、件工程 3个要素的是 ( )。 ( A)工具 ( B)过程 ( C)方法 ( D)环境 8 数据库系统在其内部具有 3级模式,用来描述数据库中全体数据的全局逻辑结构和特性的是 ( )。 ( A)外模式 ( B)概念模式 ( C)内模式 ( D)存储模式 9 将 E-R图转换到关系模式时,实体与联系都可以表示成 ( )。 ( A)属性 ( B)关系 ( C)记录 ( D)码 10 某二叉树中度为 2的结点有 10个,则该二叉树中有 ( )个叶子结点。 ( A) 9 ( B) 10 ( C) 11 ( D) 12 11 有如下程序: #include using namespace std; cl

4、ass A public: A()cout using namespace std; class A public: A(int i,int j) a=i: b=j; void move(int x, int y) a+=X: b+=y; void show() cout using namespace std; class Test public: Test() n+=2; -Test() n-=3; static int getNumOreturn n; private: static int n: ; int Test: n=1: mt main() Test*p=new Test; d

5、elete p; cout using namespace std; int s=0: class sample static int n; public: sample(int i) n=i: static void add() S+=n: : int sample: n=0: int main() sample a(2), b(5); sample: add0; cout using namespace std; class sample private: int x, y: public: sample(int i int j) X=I: y=1: void disp() cout us

6、ing namespace std; class TestClass protected: TestClass()cout using namespace std; class TestClass public: void who()coutwho(); return (): 则该程序运行后的输出结果是 ( )。 ( A) TestClassl ( B) TestClass ( C) 0 ( D)无输出 32 下列有关继承和派生的叙述中,正确的是 ( )。 ( A) 如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员 ( B)派生类的成员函数可以访问基类的所有成员 ( C)基类

7、对象可以赋值给派生类对象 ( D)如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类 33 下面叙述错误的是 ( )。 ( A)派生类可以使用 privte派生 ( B)对基类成员的访问必须是无二义性的 ( C)基类成员的访问能力在派生类中维持不变 ( D)赋值兼容规则也适用于多继承的组合 34 下列程序的输出结果为 2,横线处应添加语句 ( )。 #include using namespace std; class TestClass 1 public: void fun()coutfun(); delete p; return (): ( A) public ( B) priv

8、ate ( C) virtual ( D) protected 35 要使程序执行后的输出结果为 ABCD,应在横线处添加语句 ( )。 #include using namespace std; class A public: A0coutA; ) ; class B; public:B()coutB; ) ; class C: virtual public A public: C()coutC; ) ; class D:public B, public C public: D()coutD; ) ; void main()D obj; ) ( A) public A ( B) privat

9、e A ( C) protected A ( D) virtual public A 36 下面的描述中,正确的是 ( )。 ( A) virtual可以用来声明虚函数 ( B)禽有纯虚函数的类是不可以用来创建对象的,因为它是虚摹类 ( C)即使基类的构造函数没 有参数,派生类也必须建立构造函数 ( D)静态数据成员可以通过成员初始化列表来初始化 37 若要把函数 void fun()定义为 TestClass的友元函数,则应该在类 TestClass的定义中加入的语句是 ( )。 ( A) void friend fun() ( B) friend fun() ( C) friend voi

10、d fun() ( D) TestClass void fun() 38 已知递归函数 fun的定义如下: int fun(int n) if(n class TestClass 1 public: TestClassl0 ; *error* private: virtual-TestClass 1() using namespace std; coutmi=i; void print() *error* cout #include #include using namespace std; void WriteFile(int C ofstream outl; outl open(“modi

11、2 txttt iosbase: binarylios base: app); out l #include #include void main() char ch; fstream infile, outfile; *1* infile open(“out 1 txt”); if(!infile) cout10个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两 棵互不相交的左右子树组成,并且左右子树都是二叉树。二叉树可以是空集合,根可以有空的左子树或空的右子树。二叉树不是树的特殊情况,它们是两个概念。二叉树具有如下两个特点: 非空二叉树只有一个根结点。 每一个结点最多有两棵子树,

12、且分别称为该结点的左子树与右子树。 3 【正确答案】 B 【试题解析】 栈的操作原则为后进先出。选项 B)中出栈顺序可按 “A进, B进,B出, c进, D进, D出, C出, A出 ”实现。 4 【正确答案】 D 【试题解析】 注释一般为序言性注释和功能性注释。序言性注释常位于程序开 头部分,它包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期及修改日期等。功能性注释一般嵌在源程序体之中,用于描述其后的语句或程序的主要功能。 5 【正确答案】 A 【试题解析】 数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,或子模式,或用户模式,

13、是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式,或存储模式 ,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。 6 【正确答案】 D 【试题解析】 软件需求规格说明书有以下几个方面的作用: 便于用户、开发人员进行理解和交流。 反映出用户问题的结构,可以作为软件开发工作的基础和依据。 作为确认测试和验收的依据。 7 【正确答案】 D 【试题解析】 软件工程包括 3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;

14、工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。 8 【正确答案】 B 【试题解析】 概念模式,也称逻辑模式,是对数据库系统中全局数据逻辑结构的描述,是全体用户应用公共数据视图。它不涉及具体的硬件环境与平台,与具体的软件环境也无关。 9 【正确答案】 B 【试题解析】 E-R图由实体、实体的属性和实体之间的联系 3个要素组成,关系模型的逻辑结构是一组关系模式的集合,将 E-R图转换为关系模型:将实体、实体的属性和实体之间的联系转化为关系模式。如下表所示。10 【正确答案】 C 【试题解析】 根据二叉树的性质 3:对任何一棵二叉树, 度为 0的结点 (即叶子结点 )总

15、是比度为 2的结点多一个。 11 【正确答案】 B 【试题解析】 此题考查的是类的构造函数和析构函数。派生类构造函数的执行顺序为:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。因此本题中,首先调用基类构造函数输出 A,然后调用子对象的构造函数输出 B, p=new A再调用类 A的构造函数输出 A;析构函数的调用顺序和构造函数的调用顺序相反。 12 【正确答案】 C 【 试题解析】 此题的执行过程如下:首先 B d(3, 4);语句调用 B类的构造函数: B(int i,int j), B的构造

16、函数中调用基类 A的构造函数,使得 a=3,b=4;d fun()会调用函数 move(3, 5),使得 (3, 4)和 (3, 5)的对应部分分别相加,最后输出 6, 9。 13 【正确答案】 A 【试题解析】 语句 Test*p=new lest;会调用类的构造函数 Test()n+=2; ),使 n的值由原来的 l变为 3,然后 deletep调用类的析构函数 Test()n一 3; ,因为 n是 static型变量,所以会在 3的基础上减 3使得输出结果为 0。 14 【正确答案】 D 【试题解析】 C+语言中析构函数为符号 “ ”加类名,且析构函数没有返回值和参数,故前不加 void

17、关键字。所以正确的形式应该是一 MyClass()。 15 【正确答案】 B 【试题解析】 拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它的一般格式是:类名:类名 (const类名 &引用对象名 )。当一个类的对象赋值给该类的另一个对象时,是赋值而不是创建对象,所以不会调用拷贝构造函 数。 16 【正确答案】 B 【试题解析】 拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它不能指定函数返回类型;只有一个参数,是同类的某个对象名的引用。每一个类中都必须有一个拷贝构造函数,如果类中未声明,编译器会自动生成一个公有的拷贝构造

18、函数。 17 【正确答案】 D 【试题解析】 因题目中定义的指针 value是指向变量 i的,所以直接利用语句MyClass(int i)value=new int(i); )对 value进行赋值即可。 18 【 正确答案】 B 【试题解析】 执行语句 “sample a(2), b(5)”;的结果是使 n的值最终变为 5,sample: add,0语句调用函数 static void add(),使得 S=S+n=5。 19 【正确答案】 A 【试题解析】 此题考查的是运算符的有关概念。运算符重载是针对 C+原有运算符进行的,不能通过重载创造新的运算符;除了、 *、 -*、:、 ?:这五个

19、运算符之外,其他运算符都可以重载。 20 【正确答案】 B 【试题解析】 所谓函数重载是指同一函数名可以对 应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。 21 【正确答案】 C 【试题解析】 选项 C)是一个错误的 for语句格式, for()语句中三个表达式可以省略。但是两个分号 (; )不能省略。 22 【正确答案】 C 【试题解析】 第一次循环输出 1,第二次循环输出是 -2。在输出二次循环后 !(一 x)为 0条件不满足。停止循环。 23 【正确答案】 D 【试题解析】 p是一个指针,用来存储 a变量的地址,而 100是存储在该地址的一个值用 p表

20、示的为 *p。 24 【正确答案】 D 【试题解析】 数组有 N个元素,则数组元素引用为 a(0) a(N 1),共计 N个,没有 a(10)这个元素,最后的元素是 a(9)。 25 【正确答案】 C 【试题解析】 因为 flag=c,所以执行 cout 26 【正确答案】 B 【试题解析】 因为对象 a被定义为常对象,所以 a disp()语句调用的是类的常成员函数 voiddisp()const,输出的结果是 disp2。 27 【正确答案】 C 【试题解析】 因为 static void change()为静态函数,静态函数主要访问静态数据,不访问非静态数据。所以函数中访问了数据 y,所

21、以下划线的数据类型应对应为 static. 28 【正确答案】 C 【试题解析】 程序中的类 TestClass为基类, TestClassl为 TestClass的派生类。由 main主函数入手,定义 TestClassl类型的对象 d1,参数值为 y。 TestClassl类继承 restClass,所以主函数中 TestClassl d1(y); ”语句首先调用调用基类中的“restClass(1coutx; ”输出 x,然后调用 “TestClassl(char c)cout 29 【正确答案】 D 【试题解析】 声明派生类的一般形式为: class派生类名:【继承方式】基类名。其中继

22、承方式包括: public, pfivate, promcmd,而 virtual为 C+中的关键字。虚函数的使用方法是在基类用 virtual声明成员函数为虚函数。 30 【正确答案】 A 【试题解析】 此题考查的是存储类型。 C+语言变量的存储类型分为如下几种类型: auto函数内部的局部变量; static静态存储分配; extem一全局变量; register变量存储在硬件寄存器中。 31 【正确答案】 B 【试题解析】 程序中的 TestClas1为 TestClass的派生类,主函数 main中定义TestClass对象 *p, TestClassl对象 0bj1,然后 p引用 o

23、bj1,执行 p-who()则是调用基类中的 who函数,输出 TestClass。 32 【正确答案】 D 【试题解析】 如果派生类私有继承基类,不能访问基类中的私有成员,所以A)、 B)是错误的。派生类是对基类的具体化 ,所以 c)错误的。如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类,即选择 D)。 33 【正确答案】 C 【试题解析】 在建立派生类的时候,并不是简单地把基类的私有成员直接作为派生类的私有成员,把基类的公用成员直接作为派生类的公用成员。涉及如何确定基类的成员在派生类中的访问属性问题,不仅要考虑对基类成员所声明的访问属性,还要考虑派生类所声明的对基类的继承方式

24、,根据这两个因索共 t=同决定基类成员在派生类中的访问属性。所以本题选择 C)。 34 【正确答案】 C 【试题解析】 由主函数 main入手,定义 TestClassl类的指针对象 p指向派生类TestClass2。因为基类和派牛类中部有 fun函数,题目要求输出为 2,就是基类对象访问派生类中 fun函数。通过虚函数与指向基类对象的指针变量的配合使用,就能方便调用同名函数。所以这里将基类中的 fun函数声明为 virtual。并且当一个成员函数被声明为虚函数后,其派生类中的同名函数自动成为虚函数。 35 【正确答案】 D 【试题解析】 由主函数 main入手,定义了类 D对象 obi。其中

25、 D为类 B和 C的公有继承, A是 C的虚基类。题 目中要求的输出结果为 “ABCD”,依次为类 A,类 B,类 C,类 D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承时,即保证 A只被继承一次,输小一个 A,所以不但需要声明 A为 C的虚基类,同样也要声明 A为 B的虚基类。 36 【正确答案】 A 【试题解析】 在基类中用 virtual声明成员函数为虚函数,所以 A是正确的。纯虚函数是在声明虚函数时被 “初始化 ”为 0的虚函数。纯虚函数是一种特殊的虚函数,它没有具体的实现。静态数据成员函数只能在类外进行初始化。 37 【正确答案】 C 【试题解 析】 如果在类以外的其他

26、地方定义了一个函数,在类体中用 friend对该函数进行声明,此函数就称为本类的友元函数。因为函数为 void fun(),根据友元定义补全语句为 “friend voidfun(); ”。 38 【正确答案】 C 【试题解析】 递归函数 fun被定义为含有参数 int n,返回整型。其中 fun函数递归调用本身,当 n=1时, fun返回 1,如果大于 1那么执行 n*fun(n-2)。所以,当n等于 5时,执行 *fun(3);当 3时继续调用 fun, 3*fun(1),即fun(5)=5*(3*fun(1),答案为 15。 39 【正确答案】 C 【试题解析】 此题考查的知识点是字面常

27、量。对于整型字面常量,只要没有超过C-H中整数所能表示的范围, C+将自动按整数来存储此数,也可以通过在整型字面常量后添加 u或 1来指定无符号整数或长整数来存储;对于实型字面常最,C+将自动按照双精度数来存储,也可以通过在实型字面常量后添加 f来指定按单精度数存储。 40 【正确答案】 C 【试题解析】 此题考查的是内联函数的概念。在调用时,内联函数会像宏函数一样的展开,将调用表达式用内联函数体来 替换,所以它没有一般函数的参数压栈和退栈操作,所以选项 A)错误;即使没有使用 inline说明,编译器也会将在类的说叫部分定义的函数认定为内联函数,所以选项 B)错误;内联函数直是比普通函数有更

28、高的执行效率。 二、基本操作题 41 【正确答案】 (1)删除 “private: ”语句 (2)TestClass2(int i) (3)std: coutmistd: endl; 【试题解析】 程序要求输出值为 10, TestClass1。从已给定源程序的 main主函数开始入手, main主函数首先调 用 fun函数, fun调用 TestClass2中的 print()函数,其中 TestCLss2继承了 TestClassl。 解题思路 (1)第 1个标识下的 “virtual TestClass1()”语句是 TestClassl()析构函数,不是私有函数,所以删除 “priva

29、te: ”。 (2)“explicit TestClass2(int i)”构造函数语句中的 “explicit”是禁止隐式转换。程序中无法实现对类 TestClass2的直接使用,所以这里应该将其删除。即“TestOass2(inti)”。 (3)第 3个标识下实现, fun函数中 m i的标准输出,即在屏幕上输出 10。在程序中用到 C+标准库时,要使用 std标准命名空间进行限定。 cout为标准库函数,所以要声明 Cout是在命名空间 std中定义的流对象,即 “std: coutm istd:end; ”或者添加 “using namespace std; ”。 三、简单应用题 42

30、 【正确答案】 for(int i=1; i=x; i+) if(x i=0) 如果 x被 i整除,那么 i为 x的约数 WriteFile(i); ,将约数 i存入文件 【试题解析】 (1)本题中函数的功能是求出约数。 x的约数就是能整除其的所有整数。可以从 1开始到 x,计算取余。如果整除该数为 x的约数。 (2)从已给部分源程序的 main主函数开始入手,核心函数 void fun(int xFp的 x参数为要计算约数的整数。 解题思路 (1)由 1到 x,循环判断其中是否有 x的约数。 (2)如果 x被 i整除,那么 i为 x的约数。 (3)最后调用 WriteFile函数,将约数 i

31、存入文件。 四、综合应用题 43 【正确答案】 (1)将 “infile open(”outl txt”); ”补充完整为:infile open(“outl txt”, ios: in); (2)将 “outfile open1(”out2 txt”); ”补充完整为: outfile openq(“out2 txt”,ios: out); (3)将 “while()”补充完整为: while(infile get(ch) (4)添加语句: outfilech; 【试题解析】 本题的功能是将 out1 txt文件中的内容输出到屏幕与文件中。 解题思路为在 VC环境下打开程序,根据题干给出的几

32、条功能要求,对程序中给出注释下的内容逐个补全或修改。从已给定源程序的 main主函数开始入手,可以看出程序是对文件的操作。 解题思路 (1)题目 1要求 “以输入方式打开文件 out1 txt”。在 C+中调用文件流的成员函数open的格式为,文件流类 open(”文件名 ”:ios:in1), 所以第 1个标识下语句就该为 “infile open(”out1 txt”,ios: in); ”。 (2)题目 2要求 “以输出方式打开文件 out2 txt”。同理第 2个标识下修改为“outfile open(“out2 txt”,ios: out); ”。 (3)题目 3要求 “从文件中获得一个字符,判断是否结束 ”。程序中的 “while()”循环判断语句中缺少从文件中获得的字符,所以这里补全 while循环判断条件,即“while(infile get(ch)”。 (4)题目 4要求 “把获得的字符输出到文件中 ”。在 C+中,用流插入运算符为“”,所以根据题干中的要求在第四个标识下补全写入文件的流操作语句,即“outfilech; ”。

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

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

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