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

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

1、国家二级( C+)机试模拟试卷 138及答案与解析 一、选择题 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, 51, 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 数据库技术的根本目标是 ( )。 ( A)数据存

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

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

6、( D) d 13 有如下程序: #inc1ude iostream using namespace std; void fun(int&x, inty)int t=x; x=y; y=t; int main() int a2=1, 2; fun(a1, a0); std: cout a0 “, “ a1 std: endl; return 0: 执行后的输出结果是 ( )。 ( A) 2, 2 ( B) 1, 1 ( C) 1, 2 ( D) 2, 1 14 在 C+语言中函数返回值的类型是由( )决定的。 ( A)调用该函数时系统临时 ( B) return语句中的表达式类型 ( C)定义

7、该函数时所指定的函数类型 ( D)调 用该函数时的主调函数类型 15 下面程序的运行结果是 ( )。 #inc1ude iostream h int x=5; int fun(int a) int C: c=x*a; return C: void main() int x=3, a=4; x=x+fun(a); COut “x=“ x end1: ( A) x=15 ( B) x=17 ( C) x=23 ( D) x=25 16 分析下面程序,该程序的运行结果是 ( )。 #inc1ude iostream h class Testclass public: static int m, Te

8、stclass() m+; Testclass (int n) m=n; static void test() m+, ; int Testclass: m=0; void main() Testclass A; Testclass B(3); A test(); Testclass: test(); cout “m=“ B m end1; ( A) m=3 ( B) m=4 ( C) m=5 ( D) m=6 17 下列说法中错误的是 ( )。 ( A)公有继承时基类中的 public成员在派生类中仍是 public的 ( B)公有继承时基类中的 private成员在派生类中仍是 priva

9、te的 ( C)私有继承时基类中的 public成员在派生类中是 private的 ( D)保护继承时基类中的 public成员在派生类中是 protected的 18 下面关于构造函数和析构函数的描述,错误的是 ( )。 ( A)析构函数中调用虚函数采用静态联编 ( B)对虚析构函数的调用可以采用动态联编 ( C)当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数 ( D)构造函数可以声明为虚函数 19 有如下程序: #inc1ude iostream using namespace std; class Testclass public: Testclass()cout “BAS

10、E“; ; class Testclassl: public Testclass public: Testclassl()cout “DERIVED“; ; int main()Testclassl x; return 0; 执行后的输出结果是 ( )。 ( A) BASE ( B) DERIVED ( C) BASEDERIVED ( D) DERIVEDBASE 20 设有以下定义和程序: #inc1ude iostream h class Testclassl public: void showl() cout “Testclassl“ endl; ; class Testclass2:

11、 Testclassl public: void show2() cout “Testclass2“ endl; ; class Testclass3: protected Testclass2 public: void show3() cout “Testclass 3“ endl; ; , void main() Testclassl obj1; Testclass2 0bj2; Testclass3 0bj3; 则以下不合语法的调用语句是 ( )。 ( A) obj1 show1(); ( B) obj2 show1(); ( C) obj3, show1(); ( D) obj2 sh

12、ow2(); 21 下面程序段的正确输出是 ( )。 int w=4, x=3, y=2, z=1; cout (w x?w: z y?z: x) end1; ( A) 0 ( B) 1 ( C) 2 ( D) 3 22 若变量都已正确说明 ,则以下程序段的输出结果是 ( ) a=2; b=3; printf(a b?“*a= d“: “#b= d“, a, b); ( A)没有正确的输出格式控制 ( B)输出为: *a=2 ( C)输出为: #b=2 ( D)输出为: *a=2#b=2 23 若执行以下程序时从键盘上输入 9,则输出结果是 ( )。 main() int n; cin n,

13、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, d; d=!a&!bll!C; 1 cout d endl; ( A) 1 ( B) 0 ( C)非 0的数 ( D)一 1 25 给出下面程序输出结果 ( )。 #inc1ude iostream h void main() int *p1; int *p2=&p1; int b=20; p1=&b; cout *p2 end1; ( A) 10 ( B) 20

14、 ( C) 40 ( D) 30 26 在下面的 4个关键字中用来说明虚函数的是 ( )。 ( A) virtual ( B) public ( C) protected ( D) private 27 如果有以下定义及初始化: int a=3, *p=&a; 则由此可以推断, *p的值是 ( )。 ( A)变量 a的值,即 3 ( B)变量 a的地址值 ( C)变量 p的地址值 ( D)无意义 28 下列字符串中,正确的 C+标识符是 ( )。 ( A) foo1 ( B) 2b ( C) new ( D) 256 29 内部格式控制操作函数是在头文件 ( )中定义的。 ( A) iostr

15、eam h ( B) iomanip h ( C) istream h ( D) ostream h 30 执行语句: cout setfill(*) setw(10) setfill(#) left 123 “OK“ end1; return 0; 后将输出 ( )。 ( A) 123*OK ( B) 123#OK ( C) 123*OK* ( D) 123#OK# 31 下列对模板的声明中,正确的是 ( )。 ( A) template T ( B) template classT1 T2 ( C) template class T1, class T2 ( D) template cla

16、ss T1; class T2 32 有如下程序: #inc1ude iostream using namespace std; class AA int n: public: AA(int k): n(k) int get() return n; int get()constreturn n+1; ; int main() AA a(5); const AA b(6); cout a get0 b get(); return 0: 执行后的输出结果是 ( )。 ( A) 55 ( B) 57 ( C) 75 ( D) 77 33 关于函数重载,下列叙述中错误的是 ( )。 ( A)重载函数的

17、函数名必须相同 ( B)重载函数必须在参数个数或类型上有所不同 ( C)重载函数的返回值类型必须相同 ( D)重载函数的函数体可以有所不同 34 以下程序的执行结果为 ( )。 #inc1ude iostream h class Sample 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

18、) r=4 n=4 ( B) n=1 n=2 ( C) r=3 n=4 ( D) n=5 n=6 35 重载输入流运算符 “ ”必须使用的原型为 ( )。 ( A) istream& operator( istream&,类名 &); ( B) istream& operator( istream,类名); ( C) istream operator( istream,类名); ( D)类名 operator( istream&,类名 &); 36 运算符函数调用格式的表达式 “y x+”与表达式 “y operator( operator+( x, 0) ”的含义相同,由此可看出 ( )。

19、( A) “ ”和 “+”都是作为成员函数重载的 ( B) “ ”和 “+”都是作为非成员函数重载的 ( C) “ ”是作为成员函数重载的, “+”是作为非成员函数重载的 ( D) “ ”是作为非成员函数重载的, “+”都是作为成员函数重载的 37 派生类的构造函数的成员初始化列表中,不能包含 ( )。 ( A)基类的构造函数 ( B)派生类中子对象的初始化 ( C)基类中子对象的初始化 ( D)派生类中一般数据成员的初始化 38 在下面的类定义中,横线处应填入的内容是 ( )。 class Fred public: void print() cout data endl; void setD

20、ata(double d)data=d; static int count; private: double data; ; _count=0; 静态数据成员的定义 ( A) int ( B) static int ( C) int Fred: ( D) static int Fred: 39 下列关于 this指针的叙述中,正确的是 ( )。 ( A)任何与类相关的函数都有 this指针 ( B)类的成员函数都有 this指针 ( C)类的友元函数都有 this指针 ( D)类的非静态成员函数才有 this指针 40 下列情况中,不会调用拷贝构造函数的是 ( )。 ( A)用一个对象去 初始

21、化同一类的另一个新对象时 ( B)将类的一个对象赋值给该类的另一个对象时 ( C)函数的形参是类的对象,调用函数进行形参和实参结合时 ( D)函数的返回值是类的对象,函数执行返回调用时 二、基本操作题 41 使用 VC6打开考生文件夹下的源程序文件 modil cpp,该程序运行时有错误,请改正错误,使得程序输出: Hello test 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构,错误的语句在 *error*的下面。 #include iostream *error* template T void fun(T t) std: cout “test“ std: endl

22、; *error* template bool void fun(bool t) std: cout (t? “Hello“: “Hi“) std: endl; int main() *error* bool flag= TRUE; fun(flag); fun( int)flag); return 0; 三、简单应用题 42 使角 VC6打开考生文件夹下的源程序文件 modi2 cpp。请完成函数 fun(int x),该函数功能是将 x的值转 换成三进制数输出到屏幕,并且在函数中调用写函数 WriteFile()将结果输出到mod12 txt文件中。 例如: x=13, 13的二进制数字为

23、 1101,则输出到屏幕的为 ll01。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 #inc1ude iostream #inc1ude fstream #inc1ude cmath using namespace std; void WriteFile(char* str) ofstream outl; outl open(“modi2 txt“, ios_ base: : binary|ios_base: app); for(int i=0; stri!=0; 1+) outl put( stri); outl c1ose(); void fun(int x

24、) void c1earFile() ofstream outl; outl open(“modi2 txt“); outl c1ose(); int main() c1earFile(); fun(13); return 0: 四、综合应用题 43 使用 VC6打开考生文件夹下的源程序文件 modi3 cpp。通过继承完成输入到屏幕指定的信息: TestClassA TestClassB TestClassC 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成类 B虚继承于 A,请在注释 *1*后添加适当的语句。 (2)完成类 C虚继承于 A,请在注释 *2*后添加适

25、当的语句。 (3)完成类 D继承于 B, C,请在注释 *3*后添加适当的语句。 (4)函数 fun通过调用基类的 fun,完成所输出的内容,请在注释*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 #include iostream h class TestClassA public: void fun() cout “TestClassA“ endl; ; *1* class TestClassB public: void fun() cout “TestClassB“ endl, ; *2* class TestClassC pu

26、blic: void fun() cout fTestClassC“ endl; ; *3* class TestClassD public: void fun() *4* ; void main() TestClassD test; test fun(), return; ; 国家二级( C+)机试模拟试卷 138答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 并、差、笛卡儿积、投影和选择是 5种基本的运算,其他运算即交、连接和除,均可以通过 5种基本的运算来表达。 2 【正确答案】 A 【试题解析】 数据库有两层映像,即外模式模式和模式内模式映像。模式内模式映像定义数据库全局逻

27、辑结构与存储结构之间的对应关系。 3 【正确答案】 D 【试题解析】 在定义的链表中,若只含 有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。 4 【正确答案】 B 【试题解析】 数据库的三级模式结构是指数据库系统的外模式、模式和内模式。一个数据库可以有多个外模式,但只有一个模式和一个内模式。 5 【正确答案】 A 【试题解析】 快速排序是起泡排序的改进。在快速排序中,任取一个记录,以它为 基准用交换的

28、方法将所有的记录分成两部分,关键码值比它小的在一部分,关键码值比它大的在另一部分,再分别对两个部分实施上述过程,一直重复到排序完成。 6 【正确答案】 A 【试题解析】 数据库设计工作量大而且过程复杂,既是一项数据库工程也是一项庞大的软件工程。考虑数据库及其应用系统开发全过程,将数据库设计分为以下 6个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库的运行和维护。 7 【正确答案】 B 【试题解析】 数据库是长期储存在计算机内、有组织的、可共享的大量 数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享,所以数据库

29、技术的根本目标是解决数据共享问题。 8 【正确答案】 D 【试题解析】 需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。 9 【正确答案】 B 【试题解析】 关系数据库管理系统的专门关系运算包括选择运算、投、影运算和连接运算。 10 【正确答案】 A 【试题解析】 数据管理技术发展的三个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软

30、件系统,即数据库管理系统。 11 【正确答案】 B 【试题解析】 程序中 “static int a121=5, 3, 1, 2: ”定义了一个 2*2的整型矩阵。两个 for循环读取数组元素。 “if( i一 j) ”语句中的条件是取矩阵的正对角线上的元素。对角线上的元素为 5, 2,所以 “s1s1+aij”的计算结果为 7。 12 【正确答案】 A 【试题解析】 字符指针 p指向 “abcdefgh”字符串,语句 “r=p; ”是 r指向 p指向的字符串,而 *r则是指向字符串中的第一个字符。即 a。 13 【正确答案】 B 【试题解析】 程序中的 fun函数的功能是实现函数中两个参数的

31、交换。主函数 I中 fun的调用中第一个参数为数组第二个值即 2,第二个参数为第一个值即 1。在fun的定义中第一个形参引用类型,其改变会改变主函数中实参的值;而第二个形参不是引用类型,其改变不会 改变第二个实参,所以 2, 1的交换结果为 1, 1,即B。 14 【正确答案】 C 【试题解析】 C+中函数 return语句中返回的类型应与函数定义指定的类型一致,即函数定义的类型即为函数应返回的类型。 15 【正确答案】 C 【试题解析】 由主函数 main入手,首先 x被赋值为 3, a被赋值为 4。然后调用fun函数,参数为 4,所以在 fun函数中的 a=4。而主程序中的 x作用域是由它

32、定义开始到 cout输出,在 fun函数中无效。而在 fun函数定义前的变量 x作用域是整个程序,所以 fun函数中的 x值为 5,这样 c的值就为 20。在主函数中的 x+fun( a)中的 x为靠近这条语句的 x定义,即 3,所以最后 x的值为 20+3=23。 16 【正确答案】 C 【试题解析】 由主函数 mam入手,首先定义 TestClass对象 A, B;对象 B构造函数值为 3,构造函数中 m+,所以这时 m=4。主函数中调用 A test(),因为“staticint m, ”, m被定义为类 TestClass静态成员变量,当它的值改变后,则在各对象中这个数据成员的值都同时

33、改变了。所以这里执行 “A test(); ”中的 m为前面进行加 1操作后的 4,即 m现在的值为 5。 17 【正确答案】 B 【试题解析】 公用继承时基类中的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。私有继承时,基类的公有成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有。受保护的继承时,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员认为基类私有。 18 【正确答案】 D 【试题解析】 构造函数的主要作用是对数据成员初始化。构造函数不能声明为虚函数,这是因为在执行构造函数时类对象还未完成建立过程,当然谈不上函数与类对 象的关联。 19 【

34、正确答案】 D 【试题解析】 程序中的 TestClass1为 TestClass的派生类,从程序中的 main函数入手,定义了 TestClass1对象 x。调用析构函数的顺序,先执行派生类自己的析构函数,对派生类新增加的成员进行清理,然后调用子对象的析构函数,对子对象进行清理,最后调用基类的析构函数,对基类进行清理。这里派生类中析构函数输出 DERIVED,基类析构函数输出 BASE。 20 【正确答案】 C 【试题解析】 TestClass1为 TestClass2的私有基类, 所以派生类 TestClass2中继承过来的 show10为私有的。 TestClass3为 TestClas

35、s2的受保护派生类。所以TestClass3定义的对象不能访问 TestClass中的 show10。 21 【正确答案】 B 【试题解析】 本题考查表达式作为变量进行输出,且表达式为两个三目表达式的嵌套,其中,第 1个三目表达式 z y?z: x的值为 1,接着计算第 2个三目表达式w x?w: 1,值为 1。 22 【正确答案】 C 【试题解析】 本题实际上是考查 C语言中的格式化输入输出知识,同时本题 也考查了三目表达式的知识。如果逻辑表达式为真,则执行冒号之前的,否则执行冒号之后的表达式。 23 【正确答案】 B 【试题解析】 本题考查的是后置自增运算符的知识,这类题考生往往做错,主要

36、原因是不能正确拆解。题中 if语句可以拆解为: if( 9 10), n+1=10, cout10 endl;,自增所代表的加 l操作要紧跟在原表达式后面,而不是原语句后面。 24 【正确答案】 A 【试题解析】 本题考查逻辑运算,只要考生掌握了逻辑运算的优先级就可以正确得到答案为选项 A)。或运算的优先级最高 ,和!的优九级相同,按照从左到右的顺序计算。 25 【正确答案】 B 【试题解析】 p1指向 b,而 p指向 pl的地址。 *p2表示 pl的地址, pl的地址就是 &b,即 *p2是 &b,所以 *p2就是 b变量的值。 26 【正确答案】 A 【试题解析】 C+中用 virtual

37、关键字声明虚函数。而 public、 protected、private为成员访问限定符。 27 【正确答案】 A 【试题解析】 此题考查的是指针变量的定义与赋初值。语句 *p=&a是定义指针并且给指针赋初值,指向 a,所以指针的值就是变量 a的地址, *p的值就是 a的值。 28 【正确答案】 D 【试题解析】 此题考查的是标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过 31个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。 29 【正确答案】 B 【试题解析】 C+语言中

38、,除了 ios类成员函数之外,还提供了另一种 I O格式化方法,即操作符。所有不带形参的操作符都定义在 iostream h中,而带形参的操作符则定义在头文件 iomarup h中。 30 【正确答案】 B 【试题解析】 cout fill()用于设置或返回输出的填充字符,默认是空格, fill()函数的设置一直有效,直到下一个 fll()函数改变该值为止。 setw( int n)作用是设置输入输出的宽度,此设置只对一次输入或输出有效,在完成一次数据的输入或输出后,宽度设置自动恢复为 0。注意:默认为输出数据在指定宽度内右对齐。 31 【正确答案】 C 【试题解析】 声明一个函数模板的格式为

39、: template模板形 参表声明函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。 32 【正确答案】 B 【试题解析】 语句 AA a( 5)调用的是 AA( intk): n( k) , a get()调用int get() return n; ,结果会输出 5;而常对象 const AA b( 6), b get()调用的是 int get() const returnn+1; ,会输出结果 7。 33 【正确答案】 C 【试题解析】 所谓函数重载是指同 一函数名可以对应多个函数实现。进行函数重载时,要求同名函数

40、在参数个数上不同,或者参数类型上不同。但函数的返回类型不能作为判断重载的依据。 34 【正确答案】 A 【试题解析】 此题考查的是 “+”运算符的重载。为了区分前缀和后缀运算符,规定:重载后缀运算符时必须多一个虚拟参数: int。本题中, A( 2)首先给 n赋值 2,语句 A+,调用的是后缀运算符重载语句,使得 n加 2变为 4。 B( 2)首先给 n赋值 2,然后语句 +B,调用前缀运算符重载函数,使得 n加 1。因此最终的输出结果是 n=4 n=3。 35 【 正确答案】 A 【试题解析】 C+流的输入运算符 “ ”和输出运算符 “ ”只能作为非成员函数重载。重载输入流运算符 “ ”须使

41、用以下原型: istream&operator( istream&,类名);。 36 【正确答案】 C 【试题解析】 运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即 y operator*( z)或者 operator*( y, z);另一种是通过运算符构成表达式,即 y*z。因为 “+”运算符既可以作为前缀运算符,又可以作为后缀运算符,所以重载这个运 算符时,重载后缀 “+”时必须多一个虚拟参数: mt。 37 【正确答案】 C 【试题解析】 在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类的构造函数使基类的数据成员得以初始化。如果派生类中还有

42、子对象,还应包含对子对象初始化的构造函数。 38 【正确答案】 C 【试题解析】 此题考查的是静态数据成员的定义。题目中 count数据成员要定义成静态的,其初始化的格式为:类型类名:静态数据成员 =常量。 39 【正确答案】 D 【试题解析】 此题考查的是 this指针的使用。类的每一个非静态成员函数都有一个隐含的常量指针,即 this指针。类的静态成员函数不能含有 this指针,因为 this指针是一个指向本对象的指针。 40 【正确答案】 B 【试题解析】 此题考查的是复制构造函数的概念。用一个已知的对象初始化一个正在创建的同类对象时,就会发生复制构造函数。因此,选项 A)、 C)、 D

43、)均会调用复制构造函数,而只有选项 B)没有创建的动作,不调用复制构造函数。 二、基本操作题 41 【正确答案】 (1) template class T (2)删除 “template bool ” (3) bool flag= true; 【试题解析】 程序要求输出字符串 Hello test。从已定源程序的 main主函数开始入手,调用函数 fun实现字符的输出。 (1)C+中的模板类格式为 template class T,所以将题目中程序中的第 1个标识下语句 “template T ”修改为 “template class T ”。 (2)在第 2个标识下的 “void fun(b

44、ool t)”函数中,其中 t变量为布尔型变量,是 C+中的基础变量,并不是模板变量,并没有 使用到模板类,所以删除第 2个标识下的模板类型定义语句。 (3)第 3个标识下的 “bool flag= TRUE; ”是声明布尔型变量 flag,并将其值赋为逻辑真。而 TRUE并不是合法值, C+中区分大小写,所以逻辑真值应为 true,即“bool flag=true, ”。 三、简单应用题 42 【正确答案】 char str32; inti: for(1=30; i =0; i一一 ) 计算二进制 if(x 2)stri=1; 求余,如果余不为零 字符串 str第 i位为 1 else st

45、ri=0; 否则为 0 X =1: if( !x)break; str31= 0; 串加尾符 cout &stri endl; WriteFile(&stri); 【试题解析】 (1)该程序功能是实现十进制转换成二进制数。十进制到二进制的转换是对十进制的数字进行 2的取余运算,余数不为零则取 1,否则为 0,然后对余数进行循环取余运算,直到余数为 0。 (2)从己给 部分源程序的 main主函数开始入手,核心函数 fun(intx)中的 x参数为输入的十进制数。 (3)定义存放二进制的字符串 str。 (4)然后利用 for循环对十进制数字 x进行取余运算,直到余数为 0结束。 (5)如果取余

46、结果为 0,则二进制字符串这个字符位的值为 0,否则为 1。 (6)最后调 # WriteFile将运算结果存入文件。 四、综合应用题 43 【正确答案】 (1)将 “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(); 【试题解析】 在 VC环境下打开程序,根据题干给出的几条功能要求,对 程序中给出注释下的内容逐个补全或修改。从已定源程序的 main主函

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

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

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