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

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

1、国家二级( C+)机试模拟试卷 4及答案与解析 一、选择题 1 算法的有穷性是指 ( )。 ( A)算法程序的运行时问是有限的 ( B)算法程序所处理的数据量是有限的 ( C)算法程序的长度是有限的 ( D)算法只能被有限的用户使用 2 下列关于栈的描述中,正确的是 ( )。 ( A)在栈中只能插入元素 ( B)在栈中只能删除元素 ( C)只能在一端插入或删除元素 ( D)只能在一端插入元素,而在另一端删除元素 3 在一棵二叉树中,叶子结点共有 30个,度为 1的结点共有 40个,则该:二叉树中的总结点数共有 ( )个。 ( A) 89 ( B) 93 ( C) 99 ( D) 100 4 对

2、下列二叉树进行中序遍历的结果是 ( )。 ( A) ABCDEFGH ( B) ABDGEHCF ( C) GDBEHACF ( D) GDHEBFCA 5 设有表示学生选课的三张表,学生表 (学号,姓名,性别 ),课程表 (课程号,课程名 ),选课成绩表 (学号,课程号,成绩 ),则选课成绩表的关键字为 ( )。 ( A)课程号,成绩 ( B)学号,成绩 ( C)学号,课程号 ( D)学号,课程号,成绩 6 详细设 计主要确定每个模块具体执行过程,也称过程设计,下列不属于过程设计工具的是 ( )。 ( A) DFD图 ( B) PAD图 ( C) N-S图 ( D) PDL 7 下列关于软件

3、测试的目的和准则的叙述中,正确的是 ( )。 ( A)软件测试是证明软件没有错误 ( B)主要目的是发现程序中的错误 ( C)主要目的是确定程序中错误的位置 ( D)测试最好由程序员自己来检查自己的程序 8 在 E-R图中,用 ( )来表示实体之间联系。 ( A)矩形 ( B)菱形 ( C)椭圆形 ( D)正方形 9 在数据库系统中,数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述是 ( )。 ( A)外模式 ( B)逻辑模式 ( C)概念模式 ( D)物理模式 10 设有如下关系表,由关系 R和 S通过运算得到关系 T,则所使用的运算为 ( )。( A) T=R n S ( B) T

4、=R U S ( C) T=RXS ( D) T=IVS 11 下面的说法中错误的是 ( )。 ( A)公有继承的基类中 public成员在派生类中仍是 public ( B)私有继承的基类中 public成员在派生类中是 private ( C)公有继承的基类中 private成员在派生类中仍是 private ( D)保护继承的基类中 public成员在派生类中是 protected 12 函数定义如下: void fun(int X, int&Y)x+; y+; 如果执行代码段: int a=0, b=1; fun(a, b); 则变最 a和 b的值分别是 ( )。 ( A) 0和 1

5、( B) 0和 2 ( C) 1和 l ( D) l和 2 13 在进行了任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态;其中 ( )函数名只能用于检测输入操作。 ( A) bad() ( B) good() ( C) fail() ( D) eof() 14 执行下面语句后,输出字符 ”#”的个数是 ( )。 for(int i=50; i1, -i)cout T fun(T X, T Y)return x*x+y*y; 下面对 fun的调用中错误的是 ( ) ( A) fun(2, 6 5) ( B) fun(2, 6 5) ( C) funx1x2: *error* x

6、3=(x1x2)?x1: x2; coutch,则新的查找区间的下界不变,上界改为 k-1;否则新的查找区 间的下界改为 k+1,上界不变。在新区间内继续用二分法查找。 注意:请勿改动主函数 main与其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 #include int fun(char*str,char Ch) void main() char str=a, b, c, d, e, f,g, h, j,k, 0); char ch; toutch; cout 四、综合应用题 43 使用 VC6打开考生文件夹下的源程序文件 modi3 cpp,其中定义了用于表示日期

7、的类 Date,但类 Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。 (1)定义私有成员变量 year、 month、 day,分别表示年、月、日,类型为 int。请 在注释 *1*后添加适当的语句。 (2)完成构造函数,分别给 year、 month、 day赋值,请在注释*2*后添加适当的语句。 (3)完成重载符号 “+=”的定义,请在注释 *3*后添加适当的语句。 (4)完成 pHntO打印函数,如 2008年 8月 8日到屏幕和文件 modi3 txt格式相同,请在注释 *4*后添加适当的语句。 注意:仅在函数指定位置添加语句,请勿改动主函数 main与其他函数中的

8、任何内容。 #include #include #include #include using namespace std; void WriteFile(int C ofstream outl; outl open(“modi3 txt”,ios_base: app); outl1”说明当 i的值大于 1时重复执行循环体; “-i”表示每循环一次减 1。当 i等于 1的时候跳出循环,此时循环次数为 49次。 15 【正确答案】 B 【试题解析】 C+中声明函数模板的格式是: template,模板函数的调用可以省略实参模板,但实参模板的省略是有条件的。如果从模板函数实际参数列表中获得的信息有

9、矛盾,则不能省略实际参数模板。 16 【正确答案】 B 【试题解析】 class TestClass定义了一个类,其中 TestClass()cout成员。 20 【正确答案】 A 【试题解析】 C+中的引用作用是给变量起个别名,引用定义形式为:类型 &引用名 =变量名。 21 【正确答案】 A 【试题解析】 本题考查递归调用。递归调用分为直接递归和间接递归, A()属于间接递归。 22 【正确答案】 B 【试题解析】 函数调用时用实参替换形参,如果实参为表达式,将为表达式的值创建一个临时对象,然后将该实参替换形参。替换的实质是变量间的拷贝,当然这种拷贝需要为形参分配内存。需要注意的是: 形参

10、在编译时不分配内存,在运行时才分配内存。 23 【正确答案】 D 【试题解析】 对指针所指向的地址取值时,采用的存取运算符为 *。为取地址符。 24 【正确答案】 A 【试题解析】 引用比较特殊,即必须指向一个已有的同类型变量。引用是已有变量的别名,故选项 C)是错误的,选项 D)中变量类型不同,而选项 B)中是常数。 25 【正确答案】 A 【试题解析】 静态类型空间的特点是一次分配在整个程序没有结束时,空间地址不会改变。函数中 b的变量就是静态变量。 26 【正确答案 】 C 【试题解析】 C+中创建一个类的实例时,如果该类存在基类,将首先执行基类的构造函数,然后执行该类本身的构造函数。本

11、题中首先执行类 Base的构造函数,所以将先输出 “: BB”,然后调用基类成员函数 fun(),输出 “Bfun”,最后调用子类 Derived的构造函数输出 “DD”。 27 【正确答案】 C 【试题解析】 C+是基于 C语言发展起来的一种面向对象的高级语言,具有了面向对象程序设计语言的特征,同时具有结构化编程的思想。 28 【正确答案】 C 【试题解析】 在主函 数中定义了两个 TestClass类型的变量 a,d,因此执行两次构造函数 YestClass()。接下来执行 d=userCode(a);,在执行该函数时,由于userCode采用了传值方式来传递参数,所以要调用一次 Test

12、Class(const TestClass&x)。在函数 userCode内部 TestClass c(b);语句又调用了一次拷贝构造函数,由于函数 userCode返回的不是引用,而是一个 TestClass变量,所以还需要执行一次拷贝构造函数,所以一共要执行两次普通构造函数 (非拷贝构造函数 )与三 次拷贝构造函数。 29 【正确答案】 D 【试题解析】 如果一个成员函数没有声明为常成员函数,即使没有改变对象本身的成员值,也不能被常对象调用,所以 A)不正确。常对象除了可以调用静态成员函数外,还可以调用常成员函数,所以 B)不正确。常对象中可以有非常成员函数,所以 C)也不正确。常对象只能

13、调用对象的常成员函数,而不调用普通成员函数,故 D)选项正确, 30 【正确答案】 B 【试题解析】 关键字又被称为保留字,它是由 C+语言本身预先定义好的一类单词。详见 C+关键字表。 31 【正 确答案】 C 【试题解析】 C+中对于用 new分配的多个内存空间,可以用 deletename,将所分配的所有内存释放掉。 32 【正确答案】 C 【试题解析】 C+中的内联函数可以有,也可以没有 return语句。使用 mlme关键字来定义内联函数,放在函数定义中函数类型之前。内联函数在程序执行时并不产生实际函数调用,而是在函数调用处将函数代码展开执行。内联函数是通过编译器来实现的。在类中直接

14、定义的函数默认为内联函数。 33 【正确答案】 C 【试题解析】 在定义对象 p1时由 系统自动调用构造函数 TestClass(),输出字母A;用 new创建单个对象 TestClass(x)时,要根据参数调用相应的构造函数TestClass(char c),输出字母 X;在执行 delete时,系统会自动调用析构函数一TestClass(),输出字母 B,当对象的生存周期即将结束时系统会自动调用析构函数 TestClass(),输出字母 B。 34 【正确答案】 D 【试题解析】 友元提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。类可以利用 friend将

15、 一般函数、其他类成员函数或者其他类声明为友元。友元的声明可以放在类的任何一个区域。但是友元的实现不可以在类内部。 35 【正确答案】 D 【试题解析】 在 C+中的虚函数是一种单界面多实现版本的实现方法,即函数名、返回类型、函数类型和个数顺序完全相同,但函数体内容可以完全不同。 36 【正确答案】 B 【试题解析】 ”Derived b(2); ”以整数 2实例化变量 b,在执行 Derived的构造函数时,以 i+10即 12去调用类 Derived的父类的构造函数,将 Base: x初始化为12,然后将 Derived: x赋值为 2。在执行 b dispb()时,先调用父类中的disp

16、a,输出 Base: x,即 12,再输出 Derived: x,即 2,所以运行结果为“12, 2”。 37 【正确答案】 B 【试题解析】 一元运算符可以作为全局函数重载,所以选项 A)错误。二元运算符重载为非成员函数时,参数表中有两个参数,所以选项 C)也错误。 C+中有些运算符不能被重载,如域运算符 (: ),条件运算符 (?: )等,具体哪些运算符不能被重载与编译器有关,所以选项 D)错误。 38 【正确答案】 B 【试题解析】 数组可以在定义的时候给出其初始化的值,如果所给的数值比数组的数目少。则后面缺省的是 0。 39 【正确答案】 B 【试题解析】 程序中的静态变量在整个程序的

17、运行过程中,一直占有其分配的空间,每次运行的结果将被保留。 40 【正确答案】 D 【试题解析】 由于 “ ”在 C+中用来定义转义字符,所以必须对文件名字符串中的 “ ”进行转义,所以只有选项 D)不正确。 二、基本操作题 41 【正确答案】 (1)x3=(x1x2)?x1: x2; ”语句是判断 x1与 x2其中哪个相对较小,并将其赋值给 x3。条件运算符的格式:表达式 l?表达式 2:表达式 3。执行顺序是先求解表达式 1,若非则求解表达式 3,此时表 达式 3的值就作为整个条件表达式值。所以求 x1和 x2中较小的一个,如果 x1ch) high=k-1: else low=k+1:

18、if(str10W=ch) return low; return-1: 【试题解析】 根据题干中给出的二分法查找思想,从已给部分源程序的 main主函数开始入手,核心函数 iIlt fun(char*str, char ch)中的 ch参数为输入的字符,其中返回值为 ch所在的位置。 解题思路 (1)首先,初始查找区间的下界为 0。 (2)然后,求得字符串长度 len,上界为 len-1,查找区间的中后, k=(下界 +上界 )2;若 listk等于 ch,查找成功。 (3)若 listkch,则新的查找区间的下界不变,上界改为 k-1;否则新的查找区 间的下界改为 k+1,上界不变。 四、综

19、合应用题 43 【正确答案】 (1)添加语句: int year,month,day; (2)添加语句: year=y; month=m; day=d: (3)添加语句: Date&operator+=(int m) (4)添加语句: coutyear“年 ”month”月 ”day“日 ”endl; 【试题解析】 在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容诼个补全或修改,从已给定源程序的 main主函数开始入手, 可以看出程序通过调用类 Date和函数 print实现各种输出操作。 解题思路 (1)题目 1要求 “定义私有成员变量 year、 month、

20、day”。在 C+程序的 private区域中添加变量 year、 month、 day的定义,即在第 1个标识下添加 “int year,month,day; ”。 (2)题目 2要求 “完成构造函数,分别给 year、 month、 day赋值 ”。在程序中“Date(int y,int m,int d)”的构造函数中添加给 year、 month、 day赋值的语句,即在第 2个标识下添加 “year=y; month=m; day=d; ”。 (3)题目 3要求 “完成重载符号 “+=”的定义 ”。在 C+中,运算符重载的定义方法是定义一个重载运算符的函数,格式为函数 operator+重载运算符号 +,所以这里补全 “Date&operator+=(int m)”。 (4)题目 4要求 “完成函数 print()打印函数 ”。在 C+中的 print()函数中补全其打印功能,即在第四个标识下添加 “coutyear”: ”montll”月 ”day”日“endl; ”。

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

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

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