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

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

1、国家二级( C+)机试模拟试卷 98及答案与解析 一、选择题 1 由于常对象不能被更新,因此 ( )。 ( A)通过常对象只能调用它的常成员函数 ( B)通过常对象只能调用静态成员函数 ( C)常对象的成员都是常成员 ( D)通过常对象可以调用任何不改变对象值的成员函数 2 关于在调用模板函数时模板实参的使用,下列表述中正确的是 ( )。 ( A)对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略 ( B)对于虚拟类型参数所对应的模板实参,如果它们是参 数表中的最后的若干个参数,则都可以省略 ( C)对于虚拟类型参数所对应的模板实参,若能够省略则必须省略 (

2、 D)对于常规参数所对应的模板实参,任何情况下都不能省略 3 下列符号中可以用做 C+标识符的是 ( )。 ( A) _radius ( B) foobar ( C) else ( D) 3room 4 有如下头文件: int f1(); static int f2(); class MA public: int f3(); static int f4(); ; 在所描述的函数中,具有隐含 的 this指针的是 ( )。 ( A) f1 ( B) f2 ( C) f3 ( D) f4 5 要利用 C+流实现输入输出的各种格式控制,必须在程序中包含的头文件是 ( A) fstream ( B)

3、istream ( C) ostream ( D) iomanip 6 有如下程序段: int i=1; while(1) i+; if(i = 30) break; if(i%3 = 0) cout using namespace std; int main() int x=4; do x-; coutTabs(Tx)returnxTabs(Tx)returnxabs(Tx)returnx using namespace std; class TV public: TV(int s=41):size(s) void Print() cout和 using namespace std; int

4、 main() int x=4; do x-; cout #include using namespace std; class MyBag public: MyBag(string br,string cr):brand(br),color(cr) cout using namespace std; class Base public: Base(int x=0) cout using namespace std; class Base public: void fun() coutfun(); ( C) Base:fun(); ( D) fun(); 38 软件需求规格说明书的作用不包括

5、( A)软件验收的依据 ( B)用户与开发人员对软件要做什么的共同理解 ( C)软件设计的依据 ( D)软件可行性研究的依据 39 在下列关键字中,不能用来表示继承方式的是 ( A) private ( B) public ( C) static ( D) protected 40 下面描述中不属于软件需求分析阶段任务的是 ( A)撰写软件需求规格说明书 ( B)软件的总体结构设计 ( C)软件的需求分析 ( D)软件的需求评审 二、基本操作题 41 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 pmj1,该工程中包含程序文件 mmn cpp,其中有类 Foo和主函数 m

6、ain的定义。程序中位于每个 “ ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是: X=a Y=42 注意:只修改每个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include usingnamespacestd; classFoo public: Foo(charx)x_=x; ) chargetx()constreturnx_; ) public: staticinty_; private: charx_; ; ERROR*found* intFoo y_=42; intmain(intargc, char*argv)

7、ERROR*found* Foof; ERROR*found* cout; usingnamespacestd; classComponent public: 声明纯虚函数 print() *found* _ ; classComposite: publicComponent public: *found* voidsetChild(_) mchild=child; virtualvoidprint()const mchild-print(); private: Component*mchild; ; classLeaf: publicComponent public: virtualvoid

8、print()const *found* ; intmain() Leafnode; Compositecomp; comp setChild(&node); Component*p=∁ P-print(); return0; 四、综合应用题 43 请使用 VC6或使用【答题】菜单打开考生目录 proj3下的工程文件 proj3,此工程中包含一个源程序文件 proj3 cpp,补充编制 C+程序 proj3 cpp,其功能是读取文本文件 in dat中的全部内容,将文本 存放到 doc类的对象 myDoc中。然后将myDoc中的字符序列反转,并输出到文件 out dat中。文件 in

9、 dat的长度不大于1000字节。 要求: 补充编制的内容写在 “ *333*” 与 “ *66666*”两行之间。实现将 myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。 注意:程序最后已将结果输出到文件 out dat中,输出函数 writeToFile已经给出并且调用。 proj3 cpp #include #include #include usingnamespacestd; clasSdoc private: char*str;文本字符串首地址 intlength;文本字符个数 public: 构造函数,读取文件内容,用于初始化新对象, filen

10、ame是文件名字符串首地址 doc(char*filename); voidreverse();将字符序列反转 doc(); voidwriteToFile(char*filename); ; doc: doc(char*filename) ifstreammyFile(filename); intlen=1001, tmp; str=newcharlen; length=0; while(tmp=myFile get()!=EOF) strlength+=tmp; strlength= 0; myFile close(); voiddoc: reverse() 将数组 str中的 lengt

11、h个字符中的第一个字符与最后一个字符交换,第 二个字符与倒数第二个字符交换 *333* *666* doc: doc() deletestr; voiddoc: writeToFile(char*filename) ofstreamoutFile(filename); outFile“括起来的参数表 )或从模板函数实参表 (用 “()“括起来的参数表 )。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则空表 “也可以不要,因此选项 D错误。反之,对于某个模

12、板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。 3 【正确答案】 A 【试题解析】 本题考查 C+标识符的命名规则,其规则有如下几点: 所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头; 所有标识符不能使用 C+已有的关键字; 大、小写字母表示不同意义,即代表不同的标识符。选项 B包含了字符 “,选项 C是关键字,选项 D不能以数字开头。故答案为 A。 4 【正确答案】 C 【试题解析】 只有类的非静态成员函数才隐含 this 指针,其作用域是类内部,当类的非静态成员函数中访问

13、类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,而不 必一定写上 this。所以本题答案为 C。 5 【正确答案】 D 【试题解析】 本题考查格式控制相关知识,属于基础知识,需要包含 iomanip,所以 D选项正确。 6 【正确答案】 C 【试题解析】 本题中 while循环中当 i为 3的倍数时输出 *,而 i为 30 时跳出循环,所以输出 9个 *,答案为 C。 7 【正确答案】 C 【试题解析】 作为虚基类的类可以被实例化,派生类公用继承和保护继承基类,都可以访问基类的保护成员。如果派生类没有对虚函数重新定义,那么就调用基类的虚函数。所以 C选项正确。 8 【

14、正确答案】 D 【试题解析】 算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度,是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为 D。 9 【正确答案】 A 【试题解析】 本题考查 dowhile循环,执行第一次时,输出 x 为 3,执行第二次的时候为 1,所以输出结果为 31, A选项正确。 10 【正确答案】 B 【试题解析】 本题考查默认析构函数,题中定义了一个对象和包含 2个元素的一维对象数组,而对象指针不占用空间,对象引用也不会占用内存空间, 所以不调用构造函数,那么析构函数就执行 3次,答案为 B。 11 【正确答案】 A 【试题解析】 顺序表具

15、有以下两个基本特征:线性表中所有元素所占的存储空间是连续的;线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。在顺序表中,每个元素占有相同的存储单元。 A选项正确。 12 【正确答案】 C 【试题解析】 C+中,关键字 public、 protected、 private用来声明类的访问权限,答案为 C。 13 【正确答案】 A 【试题解析】 C+中,派生类构造函数都是先调用基类 构造函数,再根据声明次序定义数据成员,另外对于多继承,派生类的构造函数初始化列表中,基类构造函数是按照基类在派生类的派生列表中出现的次序调用的;而析构函数是按构造函数运行顺序的逆序进行调用的,可知题目中析构函数的

16、调用顺序为:派生类Derived的析构函数, Base1的析构函数, Base2的析构函数;答案为 A。 14 【正确答案】 A 【试题解析】 在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只 缺少右边的若干结点。满二叉树指除最后一层外,每一层上的所有结点都有两个子结点的二叉树。深度为 7的二叉树,前 6层共有结点个数为 26-1=63,则第 7层有 127-63=64个结点,即第 7层结点数达到最大值,故此二叉树为满二叉树,也是完全二叉树,该二叉树没有度为 1的结点,有 64个叶子结点。故

17、正确答案为 A选项。 15 【正确答案】 C 【试题解析】 本题考查四种运算符作为非成员函数的重载的使用方法,根据重载规则,本题答案为 C, C项正确原型为: Fractionoperator=( Fraction&)。 16 【正确答案】 B 【试题解析】 类 How 的定义体中没有定义任何构造函数,所以编译器需要自动生成一个默认构造函数和复制构造函数,答案为 B。 17 【正确答案】 B 【试题解析】 友元函数不是类的成员函数,所以友元函数的调用不需要使用类对象;另外运算符重载不改变运算符的优先级,所以先执行 “-“运算符重载函数,之后执行 “/“运算符重载函数,选项 A、 C、 D错误,

18、 B 正确,答案为 B。 18 【正确答案】 D 【试题解析】 C+中,使用 class 关键字定义的类,默认的成员访问级别是私有的,所以类 Why中,保护成员有: l、 f;私有成员有: n、 c。答案为 D。 19 【正确答案】 D 【试题解析】 一个非空的数据结构如果满足以下两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件,则称为线性结构,在数据结构中习惯称为线性表。 A选项中, 5为根结点,线性表为 51793。 B 选项中, 9为根结点,线性表为 97135。 C选项中, 1为根结点,线性表为 19753。 D选项,结点 1与 7都是根结点,属于非线性结构,故

19、 D选项正确。 20 【正确答案】 B 【试题解析】 本题考查 复制构造函数,在以下 3种情况下使用: 程序中需要新建立一个对象,并用另一个对象对它初始化; 函数的参数为类的对象; 函数的返回值是类的对象。其中 B 选项是由赋值运算符重载实现的。 21 【正确答案】 A 【试题解析】 本题考查模板函数的基本概念,根据模板函数的定义,所以答案为A。 22 【正确答案】 A 【试题解析】 const是一个 C+语言的关键字,它限定一个变量不允许被改变。使用 const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。 A选项没有初 始化, B、 C、 D选项都正确。 2

20、3 【正确答案】 A 【试题解析】 本题考查构造函数相关知识,本题中定义一个对象 room1,执行room1.Print时执行构造函数给 size赋值为 41,然后执行voidPrint()cout“括起来,这个表被称为类模板的模板参数表。类模板是类的抽象,类是类模板的实例。类模板使类中的一些数据成员和成员函数的参数或返回值可以取任意的数据类型。所以 B 选项正确。 34 【正确答案】 C 【试题解析】 所谓函数重载是指同一个函数名可以对应着多个函数的实现。每种实现对应着一个函数体,这些函数的名字相同,但是函数参数的类型不同,还允许参数的个数不同,但不能只有函数的返回值类型不同而参数的个数和类

21、型相同的重载。所以本题答案为 C。 35 【正确答案】 D 【试题解析】 本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。所以本题中定义了一个对象 d,先执行基类的构造函数输出 0,因为派生类中的私有数据成员为 Base,所以还会执行一次基类的构造函数输出 0,最后执行派生类的构造函数输出 1,所以本题答案为 D。 36 【正确答案】 A 【试题解析】 面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态性,所以选择 A)。 37 【正确答案】 C 【试题解析】 本

22、题考查派生类对基类成员的访问属性,派生类公用继承基类,所以派生类可以直接使用基类的公用成员,题目中输出了 Base:fun,所以可以推断派生类一定是调用了基类的 fun函数,只 有 C选项正确调用了基类的 fun 函数,所以 C选项正确。 38 【正确答案】 D 【试题解析】 软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。软件需求规格说明书有以下几个方面的作用。 便于用户、开发人员进行理解和交流, B正确; 反映出用户问题的结构,可以作为软件开发工作的基础和依据, C正确; 作为确认测试和验收的依据, A正确。 39 【正确答案】 C 【试题解析】 本题考查派生类定义时

23、使用的关键字,三种继承方式分别为private、 public、 protected,而 C选项为静态声明关键字,故选择 C。 40 【正确答案】 B 【试题解析】 需求分析阶段的工作可以分为个方面:需求获取、需求分析、编写需求规格说明书和需求评审。故 B 选项正确。 二、基本操作题 41 【正确答案】 (1)intFoo: y_=42; (2)F00f(a); (3)coutprint(); 第一条和第二条语句都是定义语句,第三条语句调用函数 setChild,由 setChild 函数的定义可知, comp 中的 m_child 等于 node,第四条语句定义了个指针 p指向comp 的地

24、址,也就是 node,最后一条语句通过指针 p 调用函数 print,也就是调用类 Leaf的函数 print,因为题目要求输出: LeafNode,因此在这里添加语句:eout“LeafNode“end1;。 四、综合应用题 43 【正确答案】 inti, j;定义两个整数临时变量 i j for(i=0, j=length一 1; ij; i+, j-) chartemp=stri; 把 stri中的值保存在临时变量 tempstri=strj; 把 strj值赋给 stri,实现字符前后替换 strj=temp; 把保存在临时变量 temp中的值再赋值给 strj 【试题解析】 题 目要求将 myDoc中的字符序列反转,在 main 函数中我们看到myDoc是 doc类,根据 doc类的定义可以知道它是把读取文件的字符串存到 str动态数组中。 reverse函数实现将数组 str中的 length 个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个字符交换,依次类推。使用变量 i和 j,分别表示第一个字符和最后一个字符的下标,定义 temp 作为中间变量进行交换。

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

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

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