【计算机类职业资格】全国计算机等级考试二级C++真题2006年4月及答案解析.doc

上传人:figureissue185 文档编号:1329627 上传时间:2019-10-17 格式:DOC 页数:17 大小:99.50KB
下载 相关 举报
【计算机类职业资格】全国计算机等级考试二级C++真题2006年4月及答案解析.doc_第1页
第1页 / 共17页
【计算机类职业资格】全国计算机等级考试二级C++真题2006年4月及答案解析.doc_第2页
第2页 / 共17页
【计算机类职业资格】全国计算机等级考试二级C++真题2006年4月及答案解析.doc_第3页
第3页 / 共17页
【计算机类职业资格】全国计算机等级考试二级C++真题2006年4月及答案解析.doc_第4页
第4页 / 共17页
【计算机类职业资格】全国计算机等级考试二级C++真题2006年4月及答案解析.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、全国计算机等级考试二级 C+真题 2006年 4月及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列选项中不属于结构化程序设计方法的是(分数:2.00)A.自顶向下B.逐步求精C.模块化D.可复用2.两个或两个以上模块之间关联的紧密程度称为(分数:2.00)A.耦合度B.内聚度C.复杂度D.数据传输特性3.下列叙述中正确的是(分数:2.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对4.按照“后进先出”原则组织数据的数据结构是(分数:2.00)A.队列B

2、.栈C.双向链表D.二叉树5.下列叙述中正确的是(分数:2.00)A.线性链表是线性表的链式存储结构B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性结构6.对如下二叉树 (分数:2.00)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA7.在深度为 7的满二叉树中,叶子结点的个数为(分数:2.00)A.32B.31C.64D.638.“商品”与“顾客”两个实体集之间的联系一般是(分数:2.00)A.一对一B.一对多C.多对一D.多对多9.在 E-R图中,用宋表示实体的图形是(分数:2.00)A.矩形B.椭圆形C.菱形D.三角形10.数据库 DB、数据

3、库系统 DBS、数据库管理系统 DBMS之间的关系是(分数:2.00)A.DB包含 DBS和 DBMSB.DBMS包含 DB和 DBSC.DBS包含 DB和 DBMSD.没有任何关系11.下列关于 C+函数的说明中,正确的是(分数:2.00)A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是 return语句C.标准 C+要求在调用一个函数之前,必须先声明其原型D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式12.由于常对象不能被更新,因此(分数:2.00)A.通过常对象只能调用它的常成员函数B.通过常对象只能调用静态成员函数C.常对象的成员都是常成员D

4、.通过常对象可以调用任何不改变对象值的成员函数13.下列关于虚函数的说明中,正确的是(分数:2.00)A.从虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都是虚函数14.运算符重载是对已有的运算符赋予多重含义,因此(分数:2.00)A.可以对基本类型(如 int类型)的数据,重新定义“+”运算符的含义B.可以改变一个已有运算符的优先级和操作数个数C.只能重载 C+中已经有的运算符,不能定义新运算符D.C+中已经有的所有运算符都可以重载15.模板对类型的参数化提供了很好的支持,因此(分数:2.00)A.类模板的主要作用是生成抽象类B.

5、类模板实例化时,编译器将根据给出的模板实参生成一个类C.在类模板中的数据成员都具有同样类型D.类模板中的成员函数都没有返回值16.下列关于 C+流的说明中,正确的是(分数:2.00)A.与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现B.从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作C.cin是一个预定义的输入流类D.输出流有一个名为 open的成员函数,其作用是生成一个新的流对象17.下列符号中可以用作 C+标识符的是(分数:2.00)A._radiusB.foobarC.elseD.3room18.下列语句中,错误的是(分数:2.00)A.const int b

6、uffer=256;B.const int temp;C.const double *point;D.const double *rtnew double(5.5);19.有如下程序: int x3; do x2; coutx; while(!(-x); 执行这个程序的输出结果是(分数:2.00)A.1B.30C.1-2D.死循环20.有如下程序: #includeiostream using namespace std; int main() int *p; *p9; cout“The value at p:“*p; return 0; 编译运行程序将出现的情况是(分数:2.00)A.编译时

7、出现语法错误,不能生成可执行文件B.运行时一定输出:The value at p:9C.运行时一定输出:The value at p:*9D.运行时有可能出错21.有如下程序: #includeiostream using namespace std; int main() void function(double val); double val; function(val); coutval; return 0; void function(double val) val3; 编译运行这个程序将出现的情况是(分数:2.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确

8、定的数22.有如下类定义: class AA int a; public: int getRef()constreturn 其中的四个函数定义中正确的是(分数:2.00)A.B.C.D.23.有如下程序: #includeiostream using namespace std; class Base public: void fun() cout“Base:fun“endl; ; class Derived: public Base public: void tim() _ cout“Derived: fun“endl; ; int main() Derived d; d.fun(); re

9、turn O; 已知其执行后的输出结果为: Base:fun Derived:fun 则程序中下划线处应填入的语句是(分数:2.00)A.Basfun();B.Base:fun();C.Base-fun();D.fun();24.下面是重载为非成员函数的运算符函数原型,其中错误的是(分数:2.00)A.Fraction operator+(Fraction,Fractio;B.Fraction operator-(Fractio;C.FractionD.FractionB.ifstream file(“d:/ncre/testxt“);C.ifstream file;filopen(“d:/n

10、cre/testxt“);D.ifstream* pFile=new ifstream(“d:/ncre/testxt“);27.有如下类定义: class Foo public: Foo(int v):value(v) / Foo() / private: Foo() / int value=0; / ; 其中存在语法错误的行是(分数:2.00)A.B.C.D.28.有如下类定义: class Point int x_,y_; public: Point():x_(0),y_(0) Point(int x,int y=0):x_(x),y_(y) ; 若执行语句 Point a(2),b3,

11、*c4; 则 Point类的构造函数被调用的次数是(分数:2.00)A.2次B.3次C.4次D.5次29.有如下类定义: class Test public: Test()a=0;c=0; / int f(int a)const this-a=a; / static int g()return a; / void h(int b)Test:b=b; / private: int a; static int b; const int c; ; int Test:b=0; 在标注号码的行中,能被正确编译的是(分数:2.00)A.B.C.D.30.有如下程序: #includeiostream us

12、ing namespace std; class A public: A()cout“A; A()cout“A“; ; class B:public A A*p; public: B()cout“B“;p=new A(); B()cout“B“;delete p; ; int main() B obj; return 0; 执行这个程序的输出结果是(分数:2.00)A.BAAABAB.ABABAAC.BAABAAD.ABAABA31.有如下程序: #includeiostream using namespace std; class Base private: void funl()const

13、 cout“funl“; protected: void fun2() constcout“fun2“; public; void fun3() const cout“fun3“; ; class Derived:protected Base public; void fun4() const cout“fun4“; ; int main() Derived obj; obj.funl(); / obj.fun2(); / obj.fun3(); / obj.fun4(): / return 0; 其中有语法错误的语句是(分数:2.00)A.B.C.D.32.有如下程序: #includeio

14、stream using namespace std; class Base public: void funl()cout“Basea“; virtual void fun2()tout“Base/n“; ; class Derived:public Base public: void funl() cout“Derived/n“; void fun2() cout“Derived/n“; ; void f(Base b.fun2(); int main() Derived obj; f(obj); return 0; 执行这个程序的输出结果是(分数:2.00)A.Base BaseB.Ba

15、se DerivedC.Derived BaseD.Derived Derived33.有如下程序: #includeiostream using namespace std; class Complex double re, im; public: Complex(double r, double i): re(r), im(i) double real() const return re; double image() const return im; Complex im += a.im; return *this; ; ostream int main() Complex x(1,-2

16、), y(2,3); cout(x+=y)endl; return 0; 执行这个程序的输出结果是(分数:2.00)A.(1,-2)B.(2,3)C.(3,5)D.(3,1)34.有如下程序: #include iostream #include iomanip using namespace std; int main() cout.fill(*); cout left setw(4) 123 “OK“ endl; return 0; (分数:2.00)A.123*OKB.123*OK*C.*123OKD.*123*OK35.有如下类声明: class SAMPLE int n; publi

17、c: SAMPLE(int i=0):n(i) void setValue(int nO); ; 下列关于 getValue 成员函数的实现中,正确的是(分数:2.00)A.SAMPLE:setValue(int n nnO;B.void SAMPLE:setValue(int n nnO;C.void setValue(int n nnO;D.(int n nnO;二、B填空题/B(总题数:15,分数:30.00)36.对长度为 10的线性表进行冒泡排序,最坏情况下需要比较的次数为U 【1】 /U。(分数:2.00)填空项 1:_37.在面向对象方法中,U 【2】 /U描述的是具有相似属性与

18、操作的一组对象。(分数:2.00)填空项 1:_38.在关系模型中,把数据看成是二维表,每一个二维表称为一个U 【3】 /U。(分数:2.00)填空项 1:_39.程序测试分为静态分析和动态测试。其中U 【4】 /U是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。(分数:2.00)填空项 1:_40.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为U 【5】 /U。(分数:2.00)填空项 1:_41.有一种只在循环语句或 switch语句中使用的流程控制语句,表示该语句的关键字是 U

19、【6】 /U。(分数:2.00)填空项 1:_42.程序中有如下语句 for(int i=0;i5;1+)cout*(p+i)“,“; 能够依次输出 int型一维数组 DATA的前 5个元素。由此可知,变量 p的定义及初始化语句是U 【7】 /U。(分数:2.00)填空项 1:_43.若下面程序运行时输出结果为 1,A,10.1 2,B,3.5 #include iostream using namespace std; int main() void test(int, char, doubieU 【8】 /U); test(1, A, 10.1 ); test(2, B); return

20、0; void test(int a, char b, double c) couta,b,cendl; (分数:2.00)填空项 1:_44.有如下类声明: class MyClass int i; private: int j; protected: int k; public: int m, n; ;其中,私有成员的数量为U 【9】 /U。(分数:2.00)填空项 1:_45.有如下程序: #includeiostream using namespace std; class Con char ID; public: Con(): ID(W) coutl; Con(char ID): I

21、D(ID) cout2; Con(Conchar getlD0const return ID; ; void show(Con c) coutc.getID(); int main() Concl; show(cl); Con c2(B); show(c2); return 0; 执行上面程序的输出是U 【10】 /U。(分数:2.00)填空项 1:_46.有如下程序: #includeiostream using namespace std; class ONE public: virtual void f() cout “1“; ; class TWO: public ONE public

22、: TWO() cout “2“; ; class THREE: public TWO public: virtual void f() TWO:f(); cout “3“; ; int main() ONE aa, *p; TWO bb; THREE cc; p = P-f(); return 0; 执行上面程序的输出是U 【11】 /U(分数:2.00)填空项 1:_47.有如下程序: #include iostream using namespace std; class PARENT public: PARENT() cout “PARENT“; ; class SON: public

23、 PARENT public: SON() cout “SON“; ; int main() SON son; PARENT *p; p = return 0; 执行上面程序的输出是U 【12】 /U。(分数:2.00)填空项 1:_48.若以非成员函数形式,为类 Bounce重载“!”运算符,其操作结果为一 bool型数据,则该运算符重载函数的原型是U 【13】 /U。(分数:2.00)填空项 1:_49.下面是复数类 complex的定义,其中重载的运算符“+”的功能是返回一个新的复数对象,其实部等于两个操作对象实部之和,其虚部等于两个操作对象虚部之和;请 补充完整: class comp

24、lex double real; /实部 double imag; /虚部 public: complex(doubler,double i):real(r),imag(i) complex operator+(complex a) return complex(U 【14】 /U); ;(分数:2.00)填空项 1:_50.已知一个函数模板定义为 templatetypename T1,typename T2 T1 FUN(T2 n)return n*5.0; 若要求以 int型数据 7为函数实参调用该模板函数,并返回一个 double型数据,则该调用应表示为U 【15】 /U。(分数:2.

25、00)填空项 1:_全国计算机等级考试二级 C+真题 2006年 4月答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列选项中不属于结构化程序设计方法的是(分数:2.00)A.自顶向下B.逐步求精C.模块化D.可复用 解析:解析 结构化程序设计方法的主要原则有 4点:自顶向下(先从最上层总目标开始设计,逐步使问题具体化)、逐步求精(对于复杂问题,设计一些子目标作为过渡,逐步细化)、模块化(将程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,每个小目标作为一个模块)、限制使用 GOTO语句。没有可复用原则,所以选项 D为答案。

26、2.两个或两个以上模块之间关联的紧密程度称为(分数:2.00)A.耦合度 B.内聚度C.复杂度D.数据传输特性解析:解析 本题考核模块独立性的评价。评价模块独立性的主要标准有两个:一是模块之间的耦合,它表明两个模块之间互相独立的程度,也可以说是两个或两个以上模块之间关联的紧密程度(所以,本题的正确答案为选项 A);二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。3.下列叙述中正确的是(分数:2.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说

27、法都不对 解析:解析 本题考核软件测试、软件调试和软件维护的概念。软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。软件测试具有挑剔性,测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷,就是说,测试是程序执行的过程,目的在于发现错误;一个好的测试在于能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误。由于测试的这一特征,一般应当避免由开发者测试自己的程序。所以,选项A的说法错误。 调试也称排错,目的是发现错误的位置,并改正错误,经测试发现错误后,可以立即进行调试并改正错误:经过调试后的程序还需进

28、行回归测试,以检查调试的效果,同时也可防止在调试过程中引进新的错误。所以,选项 B的说法错误。 软件维护通常有 4类:为纠正使用中出现的错误而进行的改正性维护;为适应环境变化而进行的适应性维护;为改进原有软件而进行的完善性维护;为将来的可维护和可靠而进行的预防性维护。软件维护不仅包括程序代码的维护,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论是哪类文档,都必须与程序代码同时维护。只有与程序代码完全一致的文档才有意义和价值。所以,选项 C的说法错误。 综上所述,选项 A、B、C 的说法都错误,所以,选项 D为正确答案。4.按照“后进先出”原则组织数据的数据结构是(分数:2.00)

29、A.队列B.栈 C.双向链表D.二叉树解析:解析 “后进先出”表示最后被插入的元素最先能被删除。选项 A中,队列是指允许在一端进行插入、而在另一端进行删除的线性表,在队列这种数据结构中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除,队列又称为“先进先出”的线性表,它体现了“先来先服务”的原则;选项 B中,栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素,栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。队列和栈都属于线性表,它们具有顺序存储的特点,所以才有“先进先出”和“后进先出”的数据组织方式。双向链表使用链式存储方式,二叉树也通常采用链式存储方式,

30、它们的存储数据的空间可以是不连续的,各个数据结点的存储顺序与数据元素之间的逻辑关系可以不一致。所以选项 C和选项 D错误。5.下列叙述中正确的是(分数:2.00)A.线性链表是线性表的链式存储结构 B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性结构解析:解析 一个非空的数据结构如果满足下列两个条件:(1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。则称为线性结构。线性链表是线性表的链式存储结构,选项 A的说法是正确的。栈与队列是特殊的线性表,它们也是线性结构,选项 B的说法是错误的;双向链表是线性表的链式存储结构,其对应的逻辑结构也是线

31、性结构,而不是非线性结构,选项 C的说法是错误的;二叉树是非线性结构,而不是线性结构,选项 D的说法是错误的。因此,本题的正确答案为 A。6.对如下二叉树 (分数:2.00)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA 解析:解析 二叉树后序遍历的简单描述如下:若二叉树为空,则结束返回。否则(1)后序遍历左子树;(2)后序遍历右子树;(3)访问根结点。 也就是说,后序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。根据后序遍历的算法,后序遍历的结

32、果为 DEBFCA。7.在深度为 7的满二叉树中,叶子结点的个数为(分数:2.00)A.32B.31C.64 D.63解析:解析 在二叉树的第 k层上,最多有 2k-1(k1)个结点。对于满二叉树来说,每一层上的结点数都达到最大值,即在满二叉树的第 k层上有 2k-1个结点。因此,在深度为 7的满二叉树中,所有叶子结点在第 7层上,即其结点数为2k-1=27-1=64因此,本题的正确答案为 C。8.“商品”与“顾客”两个实体集之间的联系一般是(分数:2.00)A.一对一B.一对多C.多对一D.多对多 解析:解析 本题考核实体集之间的联系。实体集之间的联系有 3种:一对一、一对多和多对多。因为一

33、种商品可以由多个顾客购买,而一个顾客可以购买多种商品,所以,“商品”与“顾客”两个实体集之间的联系一般是“多对多”,选项 D正确。9.在 E-R图中,用宋表示实体的图形是(分数:2.00)A.矩形 B.椭圆形C.菱形D.三角形解析:解析 在 E-R图中,用三种图框分别表示实体、属性和实体之间的联系,其规定如下:用矩形框表示实体,框内标明实体名;用椭圆状框表示实体的属性,框内标明属性名;用菱形框表示实体间的联系,框内标明联系名。所以,选项 A正确。10.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS之间的关系是(分数:2.00)A.DB包含 DBS和 DBMSB.DBMS包含 DB和

34、 DBSC.DBS包含 DB和 DBMS D.没有任何关系解析:解析 数据库管理系统 DBMS是数据库系统中实现各种数据管理功能的核心软件。它负责数据库中所有数据的存储、检索、修改以及安全保护等,数据库内的所有活动都是在其控制下进行的。所以,DBMS包含数据库 DB。操作系统、数据库管理系统与应用程序在一定的硬件支持下就构成了数据库系统。所以,DBS包含 DBMS,也就包含 DB。综上所述,选项 C正确。11.下列关于 C+函数的说明中,正确的是(分数:2.00)A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是 return语句C.标准 C+要求在调用一个函数之前,必

35、须先声明其原型 D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式解析:解析 本题考查了函数的一些概念。内联函数是在一般函数定义之前加上关键字 inline 声明的函数,其作用类似于预处理宏函数,而不是定义在另一个函数体内部的函数,所以选项 A不正确。在无返回值函数中,执行完最后一条语句后将自动返回,而不必加入 return语句,所以选项 B也是错误的。如果函数只是返回值类型不同,而其他完全相同(参数个数及类型),则不能作为重载函数宋使用,所以选项D不正确。故应该选择 C。12.由于常对象不能被更新,因此(分数:2.00)A.通过常对象只能调用它的常成员函数 B.通过常对象只能调

36、用静态成员函数C.常对象的成员都是常成员D.通过常对象可以调用任何不改变对象值的成员函数解析:解析 本题考查了常对象与常成员函数的概念。使用 const关键字修饰的对象称为常对象,它的特点是不能被更新;使用 const关键字声明的成员函数称为常成员函数,它的特点也是不能更新对象的数据成员。因为其他成员函数没有这个限制,即可以更新对象的数据成员,所以通过常对象只能调用常成员函数而不能调用其他成员函数,而且常成员函数也只能调用常成员函数而不能调用其他成员函数,否则它们的特性就会被打破。故应该选择 A。13.下列关于虚函数的说明中,正确的是(分数:2.00)A.从虚基类继承的函数都是虚函数B.虚函数

37、不得是静态成员函数 C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都是虚函数解析:解析 本题考查的是虚函数的概念。在成员函数声明的前面加上 virtual修饰,即把该函数声明为虚函数。虚函数可以是另一个类的友员函数,但不得是静态成员函数。故应该选择 B。14.运算符重载是对已有的运算符赋予多重含义,因此(分数:2.00)A.可以对基本类型(如 int类型)的数据,重新定义“+”运算符的含义B.可以改变一个已有运算符的优先级和操作数个数C.只能重载 C+中已经有的运算符,不能定义新运算符 D.C+中已经有的所有运算符都可以重载解析:解析 本题考查的是运算符重载的概念。“运算符重载”是针对

38、 C+中原有运算符进行的,不可能通过重载创造出新的运算符。故应该选择 C。15.模板对类型的参数化提供了很好的支持,因此(分数:2.00)A.类模板的主要作用是生成抽象类B.类模板实例化时,编译器将根据给出的模板实参生成一个类 C.在类模板中的数据成员都具有同样类型D.类模板中的成员函数都没有返回值解析:解析 本题考查了类模板实例化的概念。在定义对象的过程中,编译系统会自动地根据需要生成相应的类定义,这种依据类模板生成类定义的过程称为类模板的实例化。故应该选择 B。16.下列关于 C+流的说明中,正确的是(分数:2.00)A.与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现 B.从流中

39、获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作C.cin是一个预定义的输入流类D.输出流有一个名为 open的成员函数,其作用是生成一个新的流对象解析:解析 本题考查的是 C+流的一些概念。从输入流中提取数据赋给一个变量的操作称为提取操作;而把表达式的值插入到输出流中的操作称为插入操作。故选项 B的说法不正确。cin 是一个预定义的输入流对象而不是流类,故选项 C不正确。只有文件流中有一个 open成员函数,用来打开一个文件,而输入、输出流中没有 open成员函数,选项 D的说法不正确。所以,只有选项 A是正确的,应该选择 A。17.下列符号中可以用作 C+标识符的是(分数:2.

40、00)A._radius B.foobarC.elseD.3room解析:解析 本题考查 C+语言中的标识符的定义。标识符不是一个随意的字符序列,定义标识符时一般应注意如下几点:第一个字符必须是字母或下划线,中间不能有卒格,所以选项 D是错误的:在第一个字母后,可以是任意字母、下划线和数字组成的字符序列,所以选项 B不正确:标识符的长度是任意的,但特定的编译系统能够识别的标识符长度是有限的。一般不要超过 31个字符:标识符中大小写字母是有区别的:用户定义标识符时,不要采用系统的保留字,else 是系统保留字所以选项 C是错误的。故应该选择 A。18.下列语句中,错误的是(分数:2.00)A.c

41、onst int buffer=256;B.const int temp; C.const double *point;D.const double *rtnew double(5.5);解析:解析 本题考查了符号常量的特点。符号常量必须在声明的同时为其赋初值。因此选项 B是错误的。选项 C定义的是一个指向常量的指针变量,即通过该指针不能改变它所指向的内容,而它自己的内容是可以改变的。定义指针符号常量的格式应该是:double*const point;。所以选项 C是合法的,它可以不用在声明时赋初值。故应该选择 B。19.有如下程序: int x3; do x2; coutx; while(!

42、(-x); 执行这个程序的输出结果是(分数:2.00)A.1B.30C.1-2 D.死循环解析:解析 本题考查的是 do-while循环。题目首先让 x=3,然后进入 do-while循环体, x 被减去2,接下来的语句输出 x的值 1。下面计算 do-while循环的条件表达式!(-x),由于-运算符为前缀形式,所以-X 的值为 0,而!0 的结果为“真”,此时 x的值变为 0,开始第二次执行循环体。x 又被减 2,输出x的值-2,此时-x 的值为-3,!(-3)的值为“假”,所以循环结束。最后程序的输出结果是 1-2,故应该选择 C。20.有如下程序: #includeiostream u

43、sing namespace std; int main() int *p; *p9; cout“The value at p:“*p; return 0; 编译运行程序将出现的情况是(分数:2.00)A.编译时出现语法错误,不能生成可执行文件B.运行时一定输出:The value at p:9C.运行时一定输出:The value at p:*9D.运行时有可能出错 解析:解析 本题考查的是指针的运用。在使用任何指针变量之前必须先给它赋一个所指合法具体对象的地址值。本题中,在给*p 赋值前,指针变量 p并没有指向一个具体对象。此时可以通过编译,但运行时由于 p中为随机值,该赋值可能会破坏内存

44、中某个重要的地址空间中的内容,导致程序运行出错。故应该选择 D。21.有如下程序: #includeiostream using namespace std; int main() void function(double val); double val; function(val); coutval; return 0; void function(double val) val3; 编译运行这个程序将出现的情况是(分数:2.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数 解析:解析 本题考查的是函数参数的传递。在 C+中,函数在传递参数时,总是将实参值的副

45、本传递(拷贝)给被调用函数的形参,即传值调用。因此,在函数中对形参所作的任何操作都不会改变函数外的实参。故本题 function()函数不会对主函数中的 val 变量造成任何改变,val 也没有被初始化,所以输出的是一个不确定的值:故应该选择 D。22.有如下类定义: class AA int a; public: int getRef()constreturn 其中的四个函数定义中正确的是(分数:2.00)A.B. C.D.解析:解析 本题考查了常成员函数和友员函数的一些概念。getRef()函数返回的是 a的地址值 class Base public: void fun() cout“Ba

46、se:fun“endl; ; class Derived: public Base public: void tim() _ cout“Derived: fun“endl; ; int main() Derived d; d.fun(); return O; 已知其执行后的输出结果为: Base:fun Derived:fun 则程序中下划线处应填入的语句是(分数:2.00)A.Basfun();B.Base:fun(); C.Base-fun();D.fun();解析:解析 本题考查的知识点是继承的运用。题目中要求的两行输出结果分别在基类的成员函数 fun()与派生类的成员函数 fun()中给出,而主函数中只通过派生类对象 d调用 fun()函数,即只调用了派生类的成员函数 fun()。所以,横线处应该填入对基类成员函数 fun()的调用语句,此处只能使用作用域运算符“:”才能调用

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

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

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