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

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

1、国家二级( C+)机试模拟试卷 151及答案与解析 一、选择题 1 在关系代数运算中,有 5种基本运算,它们是 ( )。 ( A)并 ( )、差 (-)、交 ()、除 ()和笛卡儿积 () ( B)并 ( )、差 (-)、交 ()、投影 ()和选择 () ( C)并 ( )、交 ()、投影 ()、选择 ()和笛卡儿积 () ( D)并 ( )、差 (-)、投影 ()、选择 ()和笛卡儿积 () 2 在数据库系统的组织结构中,下列 ( )映射把用户数据库与概念数据库联系了起来。 ( A)外模式模式 ( B) 内模式外模式 ( C)模式内模式 ( D)内模式模式 3 下列关于线性链表的描述中,正确

2、的是 ( )。 、只含有一个指针域来存放下一个元素地址 、指针域中的指针用于指向该结点的前一个或后一个结点 (即前件或后件 ) 、结点由两部分组成:数据域和指针域。 ( A)仅 、 ( B)仅 、 ( C)仅 、 ( D)全部 4 下面关于数据库三级模式结构的叙述中,正确的是 ( )。 ( A)内模式可以有多个,外模式和模式只有一个 ( B)外模式可以有多个,内模式和 模式只有一个 ( C)内模式只有一个,模式和外模式可以有多个 ( D)模式只有一个,外模式和内模式可以有多个 5 设有关键码序列 (66, 13, 51, 76, 81, 26, 57, 69, 23),要按关键码值递增的次序排

3、序,若采用速排序法,并以第一个元素为划分的基准,那么第一趟划分后的结果为 ( )。 ( A) 23, 13, 5l, 57, 66, 26, 81, 69, 76 ( B) 13, 23, 26, 51, 57, 66, 81, 76, 69 ( C) 23, 13, 51, 57, 26, 66, 81, 69, 76 ( D) 23, 13, 51, 57, 81, 26, 66, 69, 76 6 下列哪一条不属于数据库设计的任务 ?( ) ( A)设计数据库应用结构 ( B)设计数据库概论结构 ( C)设计数据库逻辑结构 ( D)设计数据库物理结构 7 数据库技术的根本目标是 ( )。

4、 ( A)数据存储 ( B)数据共享 ( C)数据查询 ( D)数据管理 8 需求分析阶段的任务是 ( )。 ( A)软件开发方法 ( B)软件开发工具 ( C)软件开发费用 ( D)软件系统功能 9 关系数据库管理系统能实现的专门关系运算包括 ( )。 ( A)排序、索引、统计 ( B)选择、投影、连接 ( C)关联、更新、排序 ( D)显示、打印、制表 10 数据管理技术发展的三个阶段中, ( )没有专门的软件对数据进行管理。 人工管理阶段 文件系统阶段 数据库阶段 ( A)仅 ( B)仅 ( C) 和 ( D) 和 11 阅读以下程序: #include iostream h void

5、maim() static int a2=5,3, 1, 2; int i, j, s1=0; for(i=0; i 2; i +) fort(j=0; j 2 j+) if(i=j) s1=s1+aij; cout s1 endl; 则该程序的输出结果为 ( )。 ( A) 6 ( B) 7 ( C) 8 ( D) 9 12 若有如下程序段: #include iostream using namespace std; int main() char*p=“abcdefgh, *r; r=p; cout *r endl; return 0; 该程序的输出结果是 ( )。 ( A) a ( B

6、) b ( C) c ( D) d 13 有如下程序: #include iostream using namespace std; void fun(int ( A) x=15 ( B) x=17 ( C) x=23 ( D) x=25 16 分 析下面程序,该程序的运行结果是 ( )。 #include iostream h class TestClass public: static int m; TestClass () m+; TestClass(int n) re=n; static void test() m+; ; int TestClass: m=0; void main()

7、 TestClass A; TestClass B(3); A test(); TestClass: test(); cout m= B.m endl; ( A) m=3 ( B) m=4 ( C) m=5 ( D) m=6 17 下列说法中错误的是 ( )。 ( A)公有继承时基类中的 public成员在派生类中仍是 public的 ( B)公有继承时基类中的 private成员在派生类中仍是 private的 ( C)私有继承时基类中的 public成员在派生类中是 private的 ( D)保护继承时基类中的 public成员在派生类中是 protected的 18 下面关于构造函数和析

8、构函数的描述,错误的是 ( )。 ( A)析构函数中调用虚函数采用静态联编 ( B)对虚析构函数的调用可以采用动态联编 ( C)当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数 ( D)构造函数可以声明为虚函数 19 有如下程序: #include iostream using namespace std; class TestClass public: TestClass ()cout BASE; ; class TestClass1: public TestClass public: TestClass1 ()cout DERIVED; ; int main()TestClas

9、s1 x; return 0; 执行后的输出结果是 ( )。 ( A) BASE ( B) DERIVED ( C) BASEDERIVED ( D) DERIVEDBASE 20 设有以下定义和程序: #include iostream h class TestClass1 public: void show1() cost TestClass1 endl; ; class TestClass2: TestClass1 public: void show2() tout TestClass2 endl; ; class TestClass3: protected TestClass2 pub

10、lic: void show3() cout TestClass3 endl: ; void main() TestClassl obj1; TestClass2 obj2; TestClass3 obj3; 则以下不合语法的调用语句是 ( )。 ( A) obj1 show1(); ( B) obj2 show1(); ( C) obj3 show1(); ( D) obj2 show2(); 21 下面程序段的正确输出是 ( )。 int w=4, x=3, y=2, z=1; cout (w x?w: z y?z: x) endl; ( A) 0 ( B) 1 ( C) 2 ( D) 3

11、 22 若变量都已正确说明,则以下程序段的输出结果是 ( ) a=2; b=3; printf(a b?*a= d: #b= da, b); ( A)没有正确的输出格式控制 ( B)输出为: *a=2 ( C)输出为: #=2 , ( D)输出为: *a=2#=2 23 若执行以下程序时从键盘上输入 9,则输出结果是 ( )。 main() int n; cin n; if(n+ 10)cout n endl; else cout n- endl; ( A) 11 ( B) 10 ( C) 9 ( D) 8 24 以下程序的输出结果是 ( )。 main() int a=4, b=5, c=0

12、, d; d=!a& !b !c; cout d endl; ( A) l ( B) 0 ( C)非 0的数 ( D) -1 25 给出下面程序输出结果 ( )。 #include iostmam h void main() int *p1; int*p2=&p1; int b=20; p1=&b; cout *p2 endl; ( A) 10 ( B) 20 ( C) 40 ( D) 30 26 在下面的 4个关键字中用来说明虚函数的是 ( )。 ( A) virtual ( B) public ( C) protected ( D) private 27 如果有以下定义及初始化: int

13、a=3, *p=&a; 则由此可以推断, *p的值是 ( )。 ( A)变量 a的值,即 3 ( B)变量 a的地址值 ( C)变量 p的地址值 ( D)无意义 28 下列字 符串中,正确的 C+标识符是 ( )。 ( A) foo-1 ( B) 2b ( C) new ( D) -256 29 内部格式控制操作函数是在头文件 ( )中定义的。 ( A) iostream h ( B) iomanip h ( C) istream h ( D) ostream h 30 执行语句: cout setfill(*) setw(10) setfill(#) left 123OK endl; ret

14、urn 0; 后将输出 ( )。 ( A) 123*OK ( B) 123#OK ( C) 123*OK* ( D) 123#OK# 31 下列对模板的声明中,正确的是 ( )。 ( A) template T ( B) template class T1 T2 ( C) template class T1, class T2 ( D) template class T1; class T2 32 有如下程序: #include iostrcam using namespace std; class AA int n; public: AA(int k): n(k) int get() ret

15、urn n; int get()constreturn n+1; ; int main() AA a(5); const AA b(6); cout a get() b get() return 0: 执行后的输出结果是 ( )。 ( A) 55 ( B) 57 ( C) 75 ( D) 77 33 关于函数重载,下列叙述中错误的是 ( )。 ( A)重载函数的函数名必须相同 ( B)重载函数必须在参数个数或类型上有所不同 ( C)重载函数的返回值类型必须相同 ( D)重载函数的函数体可以有所不同 34 以下程序的执行结果为 ( )。 #include iostream h class Sam

16、ple int n: public: Sample(int i)n=i; operator+()n+; 前缀重载运算符 operator+(int)n+=2; 后缀重载运算符 void disp() cout n= n endl: ; void main() Sample A(2), B(2); A+; +B: a disp(); b disp(); ( A) n=4 n=3 ( B) n=1 n=2 ( C) n=3 n=4 ( D) n=5 n=6 35 重载输入流运算符 “ ”必须使用的原型为 ( )。 ( A) istream&operator (istream&,类名 &); ( B

17、) istream&operator (istream,类名 ); ( C) istream operator (istream,类名 ); ( D)类名 operator (istream&,类名 &); 36 运算符函数调用格式的表达式 “y x+”与表达式 “y operator (operator+(x,0)”的含义相同,由此可看出 ( )。 ( A) “ ”和 “+”都是作为成员函数重载的 ( B) “ ”和 “+”都是作为非成员函数重载的 ( C) “ ”是作为成员函数重载的, “+”是作为非成员函数重载的 ( D) “ ”是作为非成员函数重载的, “+”都是作为成员函数重载的 3

18、7 派生类的构造函数的成员初始化列表中,不能包含 ( )。 ( A)基类的构造函数 ( B)派生类中子对象的初始化 ( C)基类中子对象的初始化 ( D)派生类中一般数据成员的初始化 38 在下面的类定 义中,横线处应填入的内容是 ( )。 class Fred public: void print()cout data endl; ) void setData(double d) data=d; static int count; private: double data; ; count=0; 静态数据成员的定义 ( A) int ( B) static int ( C) int Fred

19、: ( D) static int Fred: 39 下列关于 this指针的叙述中,正确的是 ( )。 ( A)任何与类相关的函数都有 this指针 ( B)类的成员函数都有 this指针 ( C)类的友元函数都有 this指针 ( D)类的非静态成员函数才有 this指针 40 下列情况中,不会调用拷贝构造函数的是 ( )。 ( A)用一个对象去初始化同一类的另一个新对象时 ( B)将类的一个对象赋值给该类的另一个对象时 ( C)函数的形参是类的对象,调用函数进行形参和实参结合时 ( D)函数的返回值是类的对 象,函数执行返回调用时 二、基本操作题 41 使用 VC6打开考生文件夹下的源程

20、序文件 modi1 clap,该程序运行时有错误,请改正错误,使得程序输出: Hello test 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include iostream *error* template T void fun(T t) std: cout test std: endl; *error* template bool void fun(bool t) std: cout (t?Hello: Hi) std: endl; int main() *error* bool flag=TRUE; fun(flag);

21、fun(int)flag); return 0; 三、简单应用题 42 使用 VC6打开考生文件夹下 的源程序文件 modi2 cpp。请完成函数 fun(int x),该函数功能是将 x的值转换成二进制数输出到屏幕,并且在函数中调用写函数WriteFile()将结果输出到 modi2 txt文件中。 例如: x=13, 13的二进制数字为 1101,则输出到屏幕的为 1101。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 #include iostream #include fstream #include cmath using namespace std;

22、void WriteFile(char*str) orstream out1; out1 open(modi2 txt“,ios_base: binary ios _base: app); for(int i=0; stri!=0; i+) out1 put(stri); out1 close(); void ftm(int x) void ClearFile() ofstream out1; out1 open(modi2: txt); out1 close(); intmain() ClearFile(); fun(13); return 0; 四、综合应用题 43 使用 VC6打开考生文

23、件夹下的源程序文件 modi3 cpp。通过继承完成输入到屏幕指定的信息; TestClassA TestClassB TestClassC 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成类 B虚继承于 A,请在注释 *1*后添加适当的语句。 (2)完成类 C虚继承于 A,请在注释 *2*后添加适当的语句。 (3)完成类 D继承于 B, C,请在注释 *3*后添加适当的语句。 (4)函数 fun通过调用基类的 fun,完成所输出的内容,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 #include

24、 iostream h class TestClassA public: void fun() cout TestClassA endl; ; *1* class TestClassB public: void fun() cout TestClassB endl; ; *2* class TestClassC public: void fun() cout TestClassC endl; ; *3* clasS TestClassD public: void fun() *4* ; void main() TestClassD test; test fun(); return; 国家二级(

25、 C+)机试模拟试卷 151答案与解析 一、选择题 1 【正确答案】 D 【 试题解析】 并、差、笛卡儿积、投影和选择是 5种基本的运算,其他运算即交、连接和除,均可以通过 5种基本的运算来表达。 2 【正确答案】 A 【试题解析】 数据库有两层映像,即外模式模式和模式内模式映像。模式内模式映像定义数据库全局逻辑结构与存储结构之间的对应关系。 3 【正确答案】 D 【试题解析】 在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。 在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部 分用于存放指针,称为指针域。其中指针用

26、于指向该结点的前一个或后一个结点 (即前件或后件 )。 4 【正确答案】 B 【试题解析】 数据库的三级模式结构是指数据库系统的外模式、模式和内模式。-一个数据库可以有多个外模式,但只有一个模式和一个内模式。 5 【正确答案】 A 【试题解析】 快速排序是起泡排序的改进。在快速排序中,任取一个记录,以它为基准用交换的方法将所有的记录分成两部分,关键码值比它小的在一部分,关键码值比它大的在另一部分,再分别对两个部分实施上述过程,一直重复到排序完成。 6 【正确答案】 A 【试题解析】 数据库设计工作量大而且过程复杂,既是一项数据库工程也是一项庞大的软件工程。考虑数据库及其应用系统开发全过程,将数

27、据库设计分为以下 6个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库的运行和维护。 7 【正确答案】 B 【试题解析】 数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享,所以数据库技术的根本目标是解决数据共享问题。 8 【正确答案】 D 【试题解析】 需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。 9 【正确答案】 B 【试题解析】 关系数据库

28、管理系统的专门关系运算包括选择运算、投影运算和连接运算。 10 【正确答案】 A 【试题解析】 数据管理技术发展的三个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了 专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。 11 【正确答案】 B 【试题解析】 程序中 “staticint a2=5, 3, 1, 2; ”定义了一个 2*2的整型矩阵。两个 for循环读取数组元素。 “if(i=j)”语句中的条件是取矩阵的正对角线上的元素。对角线上的元素为 5, 2,所以 “

29、sl=sl+aii”的计算结果为 7。 12 【正确答案】 A 【试题解析】 字符指针 p指向 “abcdefgh”字符串,语句 “r=p; ”是 r指向 p指向的字符串,而 *r则是指向字符串中的第一个字符。即 a。 13 【正确答案】 B 【试题解析】 程序中的 fun函数的功能是实现函数中两个参数的交换。主函数中fun的调用中第一个参数为数组第二个值即 2,第二个参数为第一个值即 1。在 fun的定义中第一个形参引用类型,其改变会改变主函数中实参的值;而第二个形参不是引用类型,其改变不会改变第二个实参,所以 2, 1的交换结果为 1, 1,即B。 14 【正确答案】 C 【试题解析】 C

30、抖中函数 return语句中返回的类型应与函数定义指定的 类型一致,即函数定义的类型即为函数应返回的类型。 15 【正确答案】 C 【试题解析】 由主函数 main入手,首先 x被赋值为 3, a被赋值为 4。然后调用fun函数,参数为 4,所以在 fun函数中的 a=4。而主程序中的 x作用域是由它定义开始到 cout输出,在 fun函数中无效。而在 fun函数定义前的变量 x作用域是整个程序,所以 fun函数中的 x值为 5,这样 c的值就为 20。在主函数中的x+fun(a)中的 x为靠近这条语句的 x定义,即 3,所以最后 x的值为 20+3=23。 16 【正确答案】 C 【试题 解

31、析】 由主函数 main入手,首先定义 TestClass对象 A, B;对象 B构造函数值为 3,构造函数中 m+,所以这时 m=4。主函数中调用 A test(),因为“static int m; ”, m被定义为类 TestClass静态成员变量,当它的值改变后,则在各对象中这个数据成员的值都同时改变了。所以这里执行 “A test(); ”中的 m为前面进行加 1操作后的 4,即 m现在的值为 5。 17 【正确答案】 B 【试题解析】 公用继承时基类中的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有 。私有继承时,基类的公有成员和保护成员在派生类中成了私有成员,

32、其私有成员仍为基类私有。受保护的继承时,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员认为基类私有。 18 【正确答案】 D 【试题解析】 构造函数的主要作用是对数据成员初始化。构造函数不能声明为虚函数,这是因为在执行构造函数时类对象还未完成建立过程,当然谈不上函数与类对象的关联。 19 【正确答案】 D 【试题解析】 程序中的 TestClassl为 TestClass的派生类,从程序中的 main函数入手,定义了 TestClassl对象 x。调用析构函数的顺序,先执行派生类自己的析构函数,对派生类新增加的成员进行清理,然后调用子对象的析构函数,对子对象进行清理,最后调用基类的

33、析构函数,对基类进行清理。这里派生类中析构函数输出 DERIVED,基类析构函数输出 BASE。 20 【正确答案】 C 【试题解析】 TestClass1为 TestClass2的私有基类,所以派生类 TestClass2中继承过来的 showl()为私有的。 TestClass3为 TestClass2的受保护派生类。所以TestClass3定义的对 象不能访问 TestClass中的 show1()。 21 【正确答案】 B 【试题解析】 本题考查表达式作为变量进行输出,且表达式为两个三目表达式的嵌套,其中,第 1个三目表达式 z y?z: x的值为 1,接着计算第 2个三目表达式w x

34、?w: 1,值为 1。 22 【正确答案】 C 【试题解析】 本题实际上是考查 C语言中的格式化输入输出知识,同时本题也考查了三目表达式的知识。如果逻辑表达式为真,则执行冒号之前的,否则执行冒号之后的表达式。 23 【正确答案】 B 【试题解析】 本题考查的是 后置自增运算符的知识,这类题考生往往做错,主要原因是不能正确拆解。题中 if语句可以拆解为: if(9 10), n+1=10, cout 10 endl;,自增所代表的加 1操作要紧跟在原表达式后面,而不是原语句后面。 24 【正确答案】 A 【试题解析】 本题考查逻辑运算,只要考生掌握了逻辑运算的优先级就可以正确得到答案为选项 A)

35、。或运算的优先级最高,和 !的优先级相同,按照从左到右的顺序计算。 25 【正确答案】 B 【试题解析】 p1指向 b,而 p指向 pl的地址。 *p2表示 p1的地 址, p1的地址就是 &b,即 *p2是 &b,所以 *p2就是 b变量的值。 26 【正确答案】 A 【试题解析】 C+中用 virtual关键字声明虚函数。而 public、 protected、private为成员访问限定符。 27 【正确答案】 A 【试题解析】 此题考查的是指针变量的定义与赋初值。语句 *p=&a是定义指针并且给指针赋初值,指向 a,所以指针的值就是变量 a的地址, *p的值就是 a的值。 28 【正确

36、答案】 D 【试题解析】 此题考查的是标识符。标识符是由数字、字母以及下划 线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过 31个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。 29 【正确答案】 B 【试题解析】 C+语言中,除了 ios类成员函数之外,还提供了另一种 I O格式化方法,即操作符。所有不带形参的操作符都定义在 iostream h中,而带形参的操作符则定义在头文件 iomanip h中。 30 【正确答案】 B 【试题解析】 tout fill()用于设置或返回输出盼 填充字符,默认是空格,

37、 fill()函数的设置一直有效,直到下一个 fill()函数改变该值为止。 setw(int n)作用是设置输入输出的宽度,此设置只对一次输入或输出有效,在完成一次数据的输入或输出后,宽度设置自动恢复为 0。注意:默认为输出数据在指定宽度内右对齐。 31 【正确答案】 C 【试题解析】 声明一个函数模板的格式为: template模板形参表声明函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。 32 【正 确答案】 B 【试题解析】 语句 AA a(5)调用的是 AA(int k): n(k), a get()调用int

38、get()return; ,结果会输出 5;而常对象 constAAb(6), b get()调用的是intget()constreturnn+1: ,会输出结果 7。 33 【正确答案】 C 【试题解析】 所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。但函数的返回类型不能作为判断重载的依据。 34 【正确答案】 A 【试题解析】 此题考查的是 “+”运算符的重载。为了区分前缀和后缀运算符,规定:重载后缀运算符时必须多一个虚拟参数: int。本题中, A(2)首先给 n赋值2,语句 A+,调用的是后缀运算符重载语句,使得 n加

39、 2变为 4。 B(2)首先给 n赋值 2,然后语句 +B,调用前缀运算符重载函数,使得 n加 1。因此最终的输出结果是 n=4 n=3。 35 【正确答案】 A 【试题解析】 C+流的输入运算符 “ ”和输出运算符 “ ”只能作为非成员函数重载。重载输入流运算符 “ ”须使用以下原型: istream operator(istream&,类名 &);。 36 【正确答案】 C 【试题解析】 运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即 y operator*(z)或者 operator*(y, z);另一种是通过运算符构成表达式,即 y*z。因为 “+”运算符既可以作为前

40、缀运算符,又可以作为后缀运算符,所以重载这个运算符时,重载后缀 “+”时必须多一个虚拟参数: int。 37 【正确答案】 C 【试题解析】 在定义派生类的构造函数时,除了对自己的数据成员进行初始化外 ,还必须负责调用基类的构造函数使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数。 38 【正确答案】 C 【试题解析】 此题考查的是静态数据成员的定义。题目中 count数据成员要定义成静态的,其初始化的格式为:类型类名:静态数据成员 =常量。 39 【正确答案】 D 【试题解析】 此题考查的是 this指针的使用。类的每一个非静态成员函数都有一个隐含的常量指

41、针,即 this指针。类的静态成员函数不能含有 this指针,因为 this指针是一个指向本对象的指针。 40 【正确答案】 B 【试题解析】 此题考查的是复制构造函数的概念。用一个已知的对象初始化一个正在创建的同类对象时,就会发生复制构造函数。因此,选项 A、 C、 D均会调用复制构造函数,而只有选项 B没有创建的动作,不调用复制构造函数。 二、基本操作题 41 【正确答案】 (1)template classT (2)删除 template bool (3)bool nag=true; 【试题解析】 (1)C+中的模板类格式为 template class T,所以将题目中程序中的第 1个

42、 标识下语句 “template T ”修改为 “template class T ”。 (2)在第 2个标识下的 “void fun(bool t)”函数中,其中 t变量为布尔型变量,是C+中的基础变量,并不是模板变量,并没有使用到模板类,所以删除第 2个标识下的模板类型定义语句。 (3)第 3个标识下的 “bool flag=TRUE; ”是声明布尔型变量 flag,并将其值赋为逻辑真。而 TRUE并不是合法值, C+中区分大小写,所以逻辑真值应为 tnle,即 “bool flag=true; ”。 三、简单应 用题 42 【正确答案】 char str32; inti; for(i=3

43、0; i =0; i-) 计算二进制 if(x 2)stri=1; 求余,如果余不为零字符串 str第 i位为 1 else stri=0; 否则为 0 x =1: if(!x)break; str31= 0; 串加尾符 cout &stri endl; WriteFile(&stri); 【试题解析】 (1)定义存放二进制的字符串 str。 (2)然后利用 for循环对十进制数字 x进行取余运算,直到余数为 0结束。 (3)如果取余结果为 0,则二进制字符串这个字符位的值为 0,否则为 1。 (4)最后调用 WriteFile将运算结果存入文件。 四、综合应用题 43 【正确答案】 (1)将

44、 “class TestClassB: ”补充完整为: class TestClassB: virtual public TestClassA (2)将 “class TestClassC: ”补充完整为: class TestClassC: virtual public TestClassA (3)将 “class TestClassD: ”补充完整为: class TestClassD: public TestClassB,public TestClassC (4)添功语句: TestClassA: fun(); TestClassB: fun(); TestClassC: fun();

45、【试题解析】 (1)题目 1要求 “完成类 B虚继承于 A”。在 C+中, 声明虚基类的一般形式为: class派生类名: virtual继承方式基类名,由题目知道 TostClassA为基类, TestClassB为派生类,所以第 1个标识下修改为 “class TestClassB: virtual public TestClassA”。 (2)同 (1),题目 2和题目 3中要求的标识 2和 3下的语句修改为 “class TestClassC: virtual public TestClassA”和 “class TestClassD: public TestCtassB,public TestClassC”。 (3)题目 4要求 “函数 fun通过调用基类的 fun,完成所输出的内容 ”。在 C+中调用基类的成员函数,要使用作用域限定符 “: ”,类名 A:函数 fun,就是调用类 A的函数 fun,根据题目中的要求补全对类 TestClassA、 TestClassB以及TestClassC中的 fun函数,即 “TestClassA: fun(); TestClassB: fun();TestClassC: fun(); ”。

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

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

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