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

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

1、国家二级( C+)机试模拟试卷 153及答案与解析 一、选择题 1 在关系代数运算中,有 5种基本运算,它们是 ( )。 ( A)并 ( )、差 ()、交 ()、除 ()和笛卡儿积 () ( B)并 ( )、差 ()、交 ()、投影 ( )和选择 () ( C)并 ( )、交 ()、投影 ( )、选择 ()和笛卡儿积 () ( D)并 ( )、差 ()、投影 (x)、选择 ()和笛卡儿积 () 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 数据库技术的根本目标是 ( )

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

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

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

7、数时 的主调函数类型 15 下面程序的运行结果是 ( )。 #inc1ude iostream h int x=5; int fun(int a) int c: cx*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 c1ass TestClass public: static int m, TesK:lass () m+; TestClas

8、s (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成员在派 生类中仍是 private的 ( C)私有继承时基类中的 publi

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

10、:public TestClass public: TestClass1 ()cout “DERIVED“; ; int main ()TestClass1 x;return 0; 执行后的输出结果是 ( )。 ( A) BASE ( B) DERIVED ( C) BASEDERIVED ( D) DERIVEDBASE 20 设有以下定义和程序: #inc1ude iostream h c1ass TestClass1 pubitic: void showl0 cout “TestClass1“ end1; ; c1ass TestClass2:TestClass1 public: voi

11、d show2() cout “ TestClass2“ end1; ; c1ass TestClass3:protected TestClass2 public: void show3() cout “TestClass 3“ end1; ; void main() TestClass1 obj1; TestClass2 0bj2; TestClass3 0bj3; 则以下不合语法的调用语句是 ( )。 ( A) objl show1(); ( B) obj2 show1(); ( C) obj3 show1(); ( D) obj2 show2(); 21 下面程序段的正确输出是 ( )。

12、 int w4,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= n“:“#b= d“, a,b); ( A)没有正确的输出格式控制 ( B)输出为: *a=2 ( C)输出为: #b=2 ( D)输出为: *a=2#b=2 23 若执行以下程序时从键盘上输入 9,则输出结果是 ( )。 main() int n; cin n; if(n+ 10)cout n end1; elsecout nx e

13、nd1; ( A) 11 ( B) 10 ( C) 9 ( D) 8 24 以下程序的输出结果是 ( )。 ma:in() int a=4,b=5,c=0,d; d=!a ( A) 1 ( B) 0 ( C)非 0的数 ( D)一 1 25 给出下面程序输出结果 ( )。 #inc1ude iostream h void main() int *p1; int *p2= int b=20; p1= ( A) 10 ( B) 20 ( C) 40 ( D) 30 26 在下面的 4个关键字中用来说明虚函数的是 ( )。 ( A) virtual ( B) public ( C) protecte

14、d ( D) private 27 如果有以下定义及初始化: int a=3, *p= retum 0;后将输出 ( )。 ( A) 123*OK ( B) 123#OK ( C) 123*OK* ( D) 123#OK# 31 下列对模板的声明中,正确的是 ( )。 ( A) temp1ate T ( B) temp1ate c1ass T1 T2 ( C) temp1ate c1assT1,c1ass T2 ( D) temp1ate c1ass T1;c1ass T2 32 有如下程序: #inc1ude iostream using namespace std; c1ass AA in

15、t n; public: AA(int k):n(k) int get()retum 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 以下程序

16、的执行结果为 ( )。 #inc1ude iostream h c1ass Samp1e int n; public: Samp1e(int i)n=i; operator+0n+; 前缀重载运算符 operator+(int)n+=2; 后缀重载运算符 void disp() cout “n=“ n end1; ; void main() Samp1e A(2), B(2); A+: +B; A disp(); B disp(); ( A) n=4 n=3 ( B) n=1 n=2 ( C) n3 n=4 ( D) n=5 n=6 35 重载输入流运算符 “ ”必须使用的原型为 ( )。 (

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

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

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

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

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

22、eFile(char* str) ofstream outl; outl open(“modi2 txt“,ios_ base:binarylios_base:app); for(int i=0; stri!=0;1+) outl put(stri); outl c1ose(); void fun(int x) void ClearFile() ofstream outl; out1,open(“modi2 txt“); outl c1ose(), int main() ClearFile(); fun(13); return0; 四、综合应用题 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*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 #inc1ude iostrea

24、m h c1ass TestClassA public: void fun() cout TestClassA” end1; ) ); *1* c1ass TestClassB public: void fun() cout “TestClassB“ end1; ); *2* c1ass TestClassC public: void fun() cout “TestClassC“ end1; ; *3* c1ass TestClassD public: void fun() *4* ; void main() TestClassD test; test fun(); return; ; 国家

25、二级( C+)机试模拟试卷 153答案与解析 一、选择题 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 【试题解析】 程序中 “static int a2=5, 3, 1, 2; ”定义了一个 2*2的整型矩阵。两个 for循环读取数组元素。 “if(i=j)”语句中的条件是取矩阵的正对角线上的元素。对角线上的元素为

29、5, 2,所以 “s1=s1+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

30、 【试题解析】 C+中函数 retum语句中返回的类型应与函数定义指定的类型一致,即函数 定义的类型即为函数应返回的类型。 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 【正确答案】

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

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

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

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

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

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

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

38、能含有 this指针,因为 this指针是一个指向本对象的指针。 40 【正确答案 】 B 【试题解析】 此题考查的是复制构造函数的概念。用一个已知的对象初始化一个正在创建的同类对象时,就会发生复制构造函数。因此,选项 A)、 C)、 D)均会调用复制构造函数,而只有选项 B)没有创建的动作,不调用复制构造函数。 二、基本操作题 41 【正确答案】 (1)temp1ate class T (2)删除 “temp1ate bool ” (3)bool flag= true; 【试题解析】 程序要求输出字符串 Hello test。从已定源程序的 main主函数开始入手,调用函数 fun实现字符的

39、输出。 (1)C+中的模板类格式为 temp1ate class T,所以将题目中程序中的第 1个标识下语句 “temp1ate T ”修改为 “temp1ate class T ”。 (2)在第 2个标识下的 “void fun(bool t)”函数中,其中 t变量为布尔型变量,是 C+中的基础变量,并不是模板变量,并没有使用到模板类,所以删除第 2个标识下的模板类型定义语句。 (3)第 3个标识下的 “bool flag= TRUE;”是声明布尔型变量 flag,并将其值赋为逻辑真。而 TRUE并不是合法值, C+中区分大小写,所以逻辑真值应为 true,即“bool flag=true;

40、 ”。 三、简单应用题 42 【正确答案】 char str32; int i: for(1=30;i 20;i) /计算二进制 if(x 2)stril=1; /求余,如果余不为零字符串 str第 i位为 l else stri=0; /否则为 0 x =1; if(! x)break; str31= 0; /串加尾符 cout WriteFile( 【试题解析】 该程序功能是实现十进制转换成二进制数。十进制到二进制的转换是对十进制的数字进行 2的取余运算,余数不为零则取 l,否则为 0,然后对余数进行循环取余运算,直到余数为 0。 从已给部分源程序的 main主函数开始入手,核心函数 fu

41、n(intx)中的 x参数为输入的十进制数。 (1)定义存放二进制的字符串 str。 (2)然后利用 for循环对十进制数字 x进行取余运算,直到余数为 0结束。 (3)如果取余结果为 0,则二进制字符串这个字符位的值为 0,否则为 1。 (4)最后调用 WriteFile将运算结果存入文件。 四、综合应用题 43 【正确答案】 (1)将 “class Test Class B:”补充完整为: class Test Class B:virtual public Test Class A (2)将 “class Test Class C:”补充完整为: class Test Class C:vi

42、rtual public Test Class A (3)将 “class Test Class D:”补充完整为: class Test Class D:public TestClass B public Test Class C (4)添加语句: Test Class A:fun(); Test ClassB:fun(); TestClassC:fun(); 【试题解析】 在 VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main主函数开始入手,可以看出程序通过调用类和函数 fun实现各种输出操作。 (1)题目 l要求 “完成类 B

43、虚继承于 A”。在 C+中,声明虚基类的一般形式为:class派生类名: virtual继承方式基类名,由题 目知道 TestClassA为基类,TestClassB为派生类,所以第 1个标识下修改为 “class TestClassB:virtual public TestClassA”。 (2)同 (1),题目 2和题目 3中要求的标识 2和 3下的语句修改为 “class TestClassC:virtual public TestClassA”和 “class TestClassD:public TestClassB,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