【计算机类职业资格】C++语言笔试-6及答案解析.doc

上传人:cleanass300 文档编号:1318224 上传时间:2019-10-17 格式:DOC 页数:28 大小:78KB
下载 相关 举报
【计算机类职业资格】C++语言笔试-6及答案解析.doc_第1页
第1页 / 共28页
【计算机类职业资格】C++语言笔试-6及答案解析.doc_第2页
第2页 / 共28页
【计算机类职业资格】C++语言笔试-6及答案解析.doc_第3页
第3页 / 共28页
【计算机类职业资格】C++语言笔试-6及答案解析.doc_第4页
第4页 / 共28页
【计算机类职业资格】C++语言笔试-6及答案解析.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、C+语言笔试-6 及答案解析(总分:80.00,做题时间:90 分钟)一、单项选择题(总题数:40,分数:80.00)1.下列关于栈和队列的描述中,正确的是( )。A) 栈是先进先出B) 队列是先进后出C) 队列允许在队头删除元素D) 栈在栈顶删除元素(分数:2.00)A.B.C.D.2.已知二叉树后序遍历序列是 CDABE,中序遍历序列是 CADEB,它的前序遍历序列是( )。A) ABCDE B) ECABDC) EACDB D) CDEAB(分数:2.00)A.B.C.D.3.在数据流图中,带有箭头的线段表示的是( )。A) 控制流 B) 数据流C) 模块调用 D) 事件驱动(分数:2.

2、00)A.B.C.D.4.结构化程序设计的 3 种结构是( )。A) 顺序结构,分支结构,跳转结构B) 顺序结构,选择结构,循环结构C) 分支结构,选择结构,循环结构D) 分支结构,跳转结构,循环结构(分数:2.00)A.B.C.D.5.下列方法中,不属于软件调试方法的是( )。A) 回溯法 B) 强行排错法C) 集成测试法 D) 原因排除法(分数:2.00)A.B.C.D.6.下列选项中,不属于模块间耦合的是( )。A) 内容耦合 B) 异构耦合C) 控制耦合 D) 数据耦合(分数:2.00)A.B.C.D.7.下列特征中不是面向对象方法的主要特征的是( )。A) 多态性 B) 标识惟一性C

3、) 封装性 D) 耦合性(分数:2.00)A.B.C.D.8.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于( )。A) 需求分析阶段 B) 概念设计阶段C) 逻辑设计阶段 D) 物理设计阶段(分数:2.00)A.B.C.D.9.在一棵二叉树上,第 5 层的结点数最多是( )。A) 8 B) 9 C) 15 D) 16(分数:2.00)A.B.C.D.10.下列有关数据库的描述,正确的是( )。A) 数据库设计是指设计数据库管理系统B) 数据库技术的根本目标是要解决数据共享的问题C) 数据库是一个独立的系统,不需要操作系统的支持D) 数据库系统中,数据的物理结构必须与逻辑结构一致(

4、分数:2.00)A.B.C.D.11.以下程序的输出结果是( )。#includeiostream.hmain()int b33=0,1,2,0,1,2,0,1,2,i,j,t=1;for(i=0;i3;i+)for(j=i;j=i;j+)t=-t+bibj j;coutt;A) 2 B) 3 C) 4 D) 5(分数:2.00)A.B.C.D.12.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为( )。A) 下溢 B) 上溢 C) 异常 D) 溢出(分数:2.00)A.B.C.D.13.以下程序的输出的结果是( )。#includeiostream.

5、hvoid main()int i,k,a10,p3;k=5;for(i=0;i9;i+)ai=i;for(i=0;i3;i+)pi=ai*(i+1);for(i=0;i3;i+)k+=pi*2;coutk;A) 20 B) 21 C) 22 D) 23(分数:2.00)A.B.C.D.14.以下程序的执行结果是( )。#includeiostream.hint fun(int b,int n)int i,r=1;for(i=0;in;i+)r=r*bi;return r;void main()int x,a= 1,2,3,4,5,6,7,8 ;x=fun(a,3);coutxend1;A)

6、5 B) 6 C) 7 D) 8(分数:2.00)A.B.C.D.15.有如下程序:#includeiostreamusing namespace std;int main()int *p;*p=9;cout“The value at p:“*p;return 0;编译运行程序将出现的情况是( )。A) 编译时出现语法错误,不能生成可执行文件B) 运行时一定输出:The value at p: 9C) 运行时一定输出:The value at p: *9D) 运行时有可能出错(分数:2.00)A.B.C.D.16.下列有关指针的用法中,错误的是( )。A) int i;int*p= B) in

7、t i;int*p;i=*p;C) int*p;p=0; D) int i=5;int*p;p=(分数:2.00)A.B.C.D.17.如果有以下定义及初始化:int a=3,*p=则由此可以推断,*p 的值是( )。A) 变量 a 的值,即 3 B) 变量 a 的地址值C) 变量 P 的地址值 D) 无意义(分数:2.00)A.B.C.D.18.执行语句序列int x=1,coutx-yend1;输出的结果为( )。A) x-x B) 1-1 C) 1-0 D) 异常(分数:2.00)A.B.C.D.19.下列程序输出的结果是( )。#includestdio.hfun1(char a,ch

8、ar b)char c;c=a;a=b;b=c;fun2(char*a,char b)char c;c=*a;*a=b;b=c; fun3(char*a,char*b) char c;c=*a;*a=*b;*b=c; void main()char a,b;a=A;b=B;fun1(a,b);putchar(a);putchar(b);a=A;b=B;fun2(putchar(a);putchar(b);a=A;b=B;fun3(putchar(a);putchar(b);putchar(/n);A) BABBAB B) ABBBBAC) ABBABA D) ABABBA(分数:2.00)A.

9、B.C.D.20.下列程序将 x、y 和 z 按从小到大的顺序排列,横线处应添加语句( )。templateclass Tvoid fun (_)T a;if(xy)a=x; x=y;y=a;if(yz)a=y; y=z;z=a;if(xy)a=x; x=y;y=a;A) T x,T y,T z B) T x;y;zC) T c=2,c+=10;a =b=10;a*=2;b/=2;c%=2;couta“,“b“,“cend1;A) 20,5,0 B) 20,7,0C) 20,5,1 D) 5,20,0(分数:2.00)A.B.C.D.26.以下程序的执行结果是( )。#includeiostr

10、eam.hclass TestClass2public:TestClass2 () ;TestClass2 (int i,int j);void printb0;private:int a,b;class TestClass1public:TestClass 1() TestClass 1 (int i,int j);void printa();private:TestClass2 c;Testelass 1: :TestClass 1 (int i,int j):c(i,j)void TestClass 1 :printa()c.printb();TestClass2:TestClass2

11、(int i,int j)a=i;b=j;void TestClass2:printb()cout“a=“a“,“b=“bend1;void main()TestClassl m(7,9);m.printa();A) a=7, b=8 B) a=8, b=7C) a=7, b=9 D) a=8, b=9(分数:2.00)A.B.C.D.27.以下程序的输出结果是( )。#includeiostream.hint x=3;void main()void fun();int i;for(i= 1 ;ix;i+)fun();void fun()static int x=1 ;x*=x+ 1;cout

12、x“ “;A) 3, 3 B) 2, 2 C) 2, 6 D) 2, 5(分数:2.00)A.B.C.D.28.若有以下程序:#includeiostreamusing namespace std;int fun()static int i=0;int s=1;s+=i;i+;return s;int main()int i,a=0;for(i=0;i5;i+)a+=fun0;coutaend1;return 0;A) 20 B) 24 C) 25 D) 15(分数:2.00)A.B.C.D.29.阅读下面程序:#includeiostream.hfun(int a,int b)int c;c

13、=a+b;return c;void main()int x=6,y=7,z=8,r;r=fun(x-,y+,x+y),z-);coutrend1;则该程序的输出结果是( )。A) 11 B) 20 C) 21 D) 31(分数:2.00)A.B.C.D.30.对虚函数的调用( )。A) 一定使用动态联编 B) 必须使用动态联编C) 一定使用静态联编 D) 不一定使用动态联编(分数:2.00)A.B.C.D.31.下列函数的运行结果是( )。#includeiostream.hint add(int a,int b);void main()extern int x,y;coutadd(x,y)

14、end1;int x(20),y(5);int add(int a,int b)int s=a+b;return s;A) 25 B) 30 C) 20 D) 15(分数:2.00)A.B.C.D.32.下面程序的输出结果为( )。#includeiostream.hclass TestClasspublic:TestClass () va1+; static int va1;int TestClass:va1=0;void main()TestClass cs 1 ;coutcs1.va1“;TestClass cs2;TestClass cs3,cs4;coutcs2.va1end1;A)

15、 03 B) 13 C) 14 D) 24(分数:2.00)A.B.C.D.33.下面程序的运行结果是( )。#includeiostreamusing namespace std;class TestClassstatic int n;public:TestClass ()n+;static int test()for(int i=0;i4;i+)n+;return n;int TestClass:n=0;int main()cout TestClass:test()“ “;TestClass c1,c2;cout TestClass:test()end1;return 0;A) 4, 10

16、 B) 4, 6 C) 0, 6 D) 0, 4(分数:2.00)A.B.C.D.34.当需要将一个函数 bool isnumber(char c)声明为内联函数时,则此内联函数的函数原型为( )。A) enum bool isnumber(char c);B) define bool isnumber(char c);C) inline bool isnumber(char c);D) extembool isnumber(char c);(分数:2.00)A.B.C.D.35.下列关于类和对象的叙述中,错误的是( )。A) 一个类只能有一个对象B) 对象是类的具体实例C) 类是对某一类对象

17、的抽象D) 类和对象的关系是一种数据类型与变量的关系(分数:2.00)A.B.C.D.36.下列关于成员函数特征的描述中,错误的是( )。A) 成员函数一定是内联函数B) 成员函数可以重载C) 成员函数可以设置参数的默认值D) 成员函数可以是静态的(分数:2.00)A.B.C.D.37.下列关于 C+函数的叙述中,正确的是( )。A) 每个函数至少要具有一个参数B) 每个函数都必须返回一个值C) 函数在被调用之前必须先声明D) 函数不能自己调用自己(分数:2.00)A.B.C.D.38.下列关于虚函数的说明中,正确的是( )。A) 从虚基类继承的函数都是虚函数B) 虚函数不得是静态成员函数C)

18、 只能通过指针或引用调用虚函数D) 抽象类中的成员函数都是虚函数(分数:2.00)A.B.C.D.39.下列运算符不能重载为友元函数的是( )。A) = () - B) + - + -C) = = D) += -= *= /=(分数:2.00)A.B.C.D.40.有如下函数模板:templateclass TT square (T x) return x*x;其中 T 是( )。A) 函数形参 B) 函数实参C) 模板形参 D) 模板实参(分数:2.00)A.B.C.D.C+语言笔试-6 答案解析(总分:80.00,做题时间:90 分钟)一、单项选择题(总题数:40,分数:80.00)1.下

19、列关于栈和队列的描述中,正确的是( )。A) 栈是先进先出B) 队列是先进后出C) 队列允许在队头删除元素D) 栈在栈顶删除元素(分数:2.00)A.B.C.D. 解析:解析 栈实际也是线性表,只不过是一种特殊的线性表。栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。2.已知二叉树后序遍历序列是 CDABE,中序遍历序列是 CADEB,它的前序遍历序列是( )。A) ABCDE B) ECABDC) EACDB D) CDEAB(分数:2.00)A.B.C.

20、 D.解析:解析 由于后序遍历的最后一个元素为 E,所以 E 为根结点,所以它的前序遍历的首个元素为 E,故排除 A)和 D)选项。由于中序遍历中,元素 B 在元素根结点 E 的后面,所以 B 为二叉树的右子树,并且该二叉树右子树只有一个元素,所以前序遍历的最后一个元素应为 B,故选项 C)为正确选项,即该二叉树的前序遍历序列是 EACDB。3.在数据流图中,带有箭头的线段表示的是( )。A) 控制流 B) 数据流C) 模块调用 D) 事件驱动(分数:2.00)A.B. C.D.解析:解析 数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。4.结构化程序设计的

21、 3 种结构是( )。A) 顺序结构,分支结构,跳转结构B) 顺序结构,选择结构,循环结构C) 分支结构,选择结构,循环结构D) 分支结构,跳转结构,循环结构(分数:2.00)A.B. C.D.解析:解析 程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。5.下列方法中,不属于软件调试方法的是( )。A) 回溯法 B) 强行排错法C) 集成测试法 D) 原因排除法(分数:2.00)A.B.C. D.解析:解析 软件调试

22、主要采用以下三种方法:强行排错法:作为传统的调试方法,其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。回溯法:该方法适合于小规模程序的排错、即一旦发现了错误,先分析错误征兆,确定最先发现“症状”的位置。原因排除法:原因排除法是通过演绎和归纳,以及二分法来实现。6.下列选项中,不属于模块间耦合的是( )。A) 内容耦合 B) 异构耦合C) 控制耦合 D) 数据耦合(分数:2.00)A.B. C.D.解析:解析 耦合可以分为下列几种,它们之间的耦合度由高到低排列:内容耦合若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。公共耦合若一组模块都访问同一全局数据结构,则称为公共耦

23、合。外部耦合若一组模块都访问同一全局数据项,则称为外部耦合。控制耦合若一模块明显地把开关量、名字等信息送入另一模块,控制另一模块的功能,则称为控制耦合。标记耦合若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余全局变量的方式而全使用记录传递的方式,这样的耦合称为标记耦合。数据耦合若一个模块访问另一个模块,被访问模块的输入和输出都是数据项参数,则这两个模块为数据耦合。非直接耦合若两个模块没有直接关系,它们之间的联系完全是通过程序的控制和调用来实现的,则称这两个模块为非直接耦合,这样的耦合独立性最强。7.下列特征中不是面向对象方法的主要特征的是( )。A) 多态性 B) 标识惟一性C)

24、封装性 D) 耦合性(分数:2.00)A.B.C.D. 解析:解析 面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:标识惟一性、多态性、封装性、模块独立性、继承和多态性好。8.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于( )。A) 需求分析阶段 B) 概念设计阶段C) 逻辑设计阶段 D) 物理设计阶段(分数:2.00)A.B.C. D.解析:解析 逻辑结构设计的任务:概念结构是各种数据模型的共同基础,为了能够用某一 DBMS 实现用户需求,还必须将概念结构进一步转化为相应的数据模型,这正是数据库逻辑结

25、构设计所要完成的任务。它包括从 E-R 图向关系模式转换和逻辑模式规范化及调整、实现。9.在一棵二叉树上,第 5 层的结点数最多是( )。A) 8 B) 9 C) 15 D) 16(分数:2.00)A.B.C.D. 解析:解析 根据二叉树的性质:二又树第 i(i10.下列有关数据库的描述,正确的是( )。A) 数据库设计是指设计数据库管理系统B) 数据库技术的根本目标是要解决数据共享的问题C) 数据库是一个独立的系统,不需要操作系统的支持D) 数据库系统中,数据的物理结构必须与逻辑结构一致(分数:2.00)A.B. C.D.解析:解析 数据库设计的目的实质上是设计出满足实际应用需求的实际关系模

26、型。数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。11.以下程序的输出结果是( )。#includeiostream.hmain()int b33=0,1,2,0,1,2,0,1,2,i,j,t=1;for(i=0;i3;i+)for(j=i;j=i;j+)t=-t+bibj j;coutt;A) 2 B) 3 C) 4 D) 5(分数:2.00)A.B.C. D.解析:解析 程序中通过 for 二重循环依次取二维数组中

27、的数值进行与 t 的累加。取数组中的元素为 i行和符合循环条件的 bjj列的数据。循环为 0,1,2 行,对应 0,1,2 列。即 0,1,2。所以1+0+1+2=4。12.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为( )。A) 下溢 B) 上溢 C) 异常 D) 溢出(分数:2.00)A.B. C.D.解析:解析 由于头尾指针不断前移,超出向量空间。这时整个向量空间及队列是满的却产生了“上溢”现象。13.以下程序的输出的结果是( )。#includeiostream.hvoid main()int i,k,a10,p3;k=5;for(i=0;i

28、9;i+)ai=i;for(i=0;i3;i+)pi=ai*(i+1);for(i=0;i3;i+)k+=pi*2;coutk;A) 20 B) 21 C) 22 D) 23(分数:2.00)A.B. C.D.解析:解析 程序中首先在第一个 for 循环中将数组 a 每一个元素赋值为 0,1,2,。然后在第二个循环中数组 p 的第 i 元素为 a 中的第 i*(i+1),即 0,2,6,第三个循环中数组 p 中的每个元素值乘以2,然后加上 5,累加。14.以下程序的执行结果是( )。#includeiostream.hint fun(int b,int n)int i,r=1;for(i=0;

29、in;i+)r=r*bi;return r;void main()int x,a= 1,2,3,4,5,6,7,8 ;x=fun(a,3);coutxend1;A) 5 B) 6 C) 7 D) 8(分数:2.00)A.B. C.D.解析:解析 由程序的 main 函数入手,调用 fun 函数,其中参数为数组 a 和 3。fun 函数的功能是 for循环中由第一个数组元素开始到第三个元素进行累积。15.有如下程序:#includeiostreamusing namespace std;int main()int *p;*p=9;cout“The value at p:“*p;return 0;

30、编译运行程序将出现的情况是( )。A) 编译时出现语法错误,不能生成可执行文件B) 运行时一定输出:The value at p: 9C) 运行时一定输出:The value at p: *9D) 运行时有可能出错(分数:2.00)A.B.C.D. 解析:解析 题目程序中“int *p;”是定义了一个指针变量 p,“*p=9;”是将 p 当前指向的指针赋为9。指针 p 在执行这个赋值操作前并没有初始化这个变量 p,所以会有 p 未初始化的警告错误。16.下列有关指针的用法中,错误的是( )。A) int i;int*p= B) int i;int*p;i=*p;C) int*p;p=0; D)

31、 int i=5;int*p;p=(分数:2.00)A.B. C.D.解析:解析 “int i”语句为定义了一个整型变量 i。“int *p”为定义一个整型指针 p。选项 A)中的“int*p=”是定义整型指针变量 p,并指向整型 i 的地址。选项 B)中“i=*p”语句是将 p 指向的变量赋值给 i,而指针 p 没有初始化,所以选项 B)错误。选项 C)中“p=0;”表示 p 指向 0 的地址。选项 D)中“则由此可以推断,*p 的值是( )。A) 变量 a 的值,即 3 B) 变量 a 的地址值C) 变量 P 的地址值 D) 无意义(分数:2.00)A. B.C.D.解析:解析 题目中的定

32、义初始化是定义一个整型变量 a,初始化为 3。而“int*p=”是定义一个整型指针变量 p,将变量 a 的地址作为指针变量 p 的初值。*p 是指针变量 p 指向的存储单元的内容,即变量值。所以*p 指向 a 的值 3。18.执行语句序列int x=1,coutx-yend1;输出的结果为( )。A) x-x B) 1-1 C) 1-0 D) 异常(分数:2.00)A.B. C.D.解析:解析 程序中的“int x=1”定义 x 为 int 型变量,并赋值为 1。语句“c=a;a=b;b=c;fun2(char*a,char b)char c;c=*a;*a=b;b=c; fun3(char*

33、a,char*b) char c;c=*a;*a=*b;*b=c; void main()char a,b;a=A;b=B;fun1(a,b);putchar(a);putchar(b);a=A;b=B;fun2(putchar(a);putchar(b);a=A;b=B;fun3(putchar(a);putchar(b);putchar(/n);A) BABBAB B) ABBBBAC) ABBABA D) ABABBA(分数:2.00)A.B. C.D.解析:解析 由程序中的主函数 main 入手,分别调用 fun1,fun2,fun3 函数,得到输出结果。其中,三个函数都是实现两个形参

34、的交换功能,只是参数传递的方式不同,有的是地址,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以调用 fun1 后,实参 a 和 b 并没有交换,仍然是 AB。第二个调用中,实参 a 采用的是地址,即传递的是地址,所以形参 a 的改变会影响实参 a 的值,即 BB。同理,调用 fun3 后为 BA。20.下列程序将 x、y 和 z 按从小到大的顺序排列,横线处应添加语句( )。templateclass Tvoid fun (_)T a;if(xy)a=x; x=y;y=a;if(yz)a=y; y=z;z=a;if(xy)a=x; x=y;y=a;A) T x,T

35、 y,T z B) T x;y;zC) T c=2,c+=10;a =b=10;a*=2;b/=2;c%=2;couta“,“b“,“cend1;A) 20,5,0 B) 20,7,0C) 20,5,1 D) 5,20,0(分数:2.00)A. B.C.D.解析:解析 c+=10 使得 c=12;a=b=10,a*=2 使得 a=20;b/=2,b=10/2,使得 b=5;c=12%2=0,所以输出值 20,5,0。26.以下程序的执行结果是( )。#includeiostream.hclass TestClass2public:TestClass2 () ;TestClass2 (int i

36、,int j);void printb0;private:int a,b;class TestClass1public:TestClass 1() TestClass 1 (int i,int j);void printa();private:TestClass2 c;Testelass 1: :TestClass 1 (int i,int j):c(i,j)void TestClass 1 :printa()c.printb();TestClass2:TestClass2 (int i,int j)a=i;b=j;void TestClass2:printb()cout“a=“a“,“b=“

37、bend1;void main()TestClassl m(7,9);m.printa();A) a=7, b=8 B) a=8, b=7C) a=7, b=9 D) a=8, b=9(分数:2.00)A.B.C. D.解析:解析 由主函数 main 入手,定义了 TestClass1 的对象 m,其中参数为 7 和 9。“m.printa();”中 TestClass1 中 printa 为“c.printb();”,其中 c 为 TestClass2 的“对象, 所以 printb 为TestClass2 中的“voidTestClass2:printb()”,即输出为“a=7,b=9”。

38、27.以下程序的输出结果是( )。#includeiostream.hint x=3;void main()void fun();int i;for(i= 1 ;ix;i+)fun();void fun()static int x=1 ;x*=x+ 1;coutx“ “;A) 3, 3 B) 2, 2 C) 2, 6 D) 2, 5(分数:2.00)A.B.C. D.解析:解析 由主函数入手,在 for 循环中调用 fun 函数,其中调用次数为 2 次。fun 中 x 为静态变量,有效到文件结束,所以第一次调用为 x=x*(x+1)=1*(1+1)=2,第二次调用 2*(2+1)=6。28.若

39、有以下程序:#includeiostreamusing namespace std;int fun()static int i=0;int s=1;s+=i;i+;return s;int main()int i,a=0;for(i=0;i5;i+)a+=fun0;coutaend1;return 0;A) 20 B) 24 C) 25 D) 15(分数:2.00)A.B.C.D. 解析:解析 由主函数入手,在 for 循环中调用 fun 函数,其中调用次数为 5。fun 中 i 为静态变量,有效到文件结束。第一次调用 fun 后为 s=1,a=1;第二次调用后 s=2,a=3 第三次 s=3

40、,a=6;第四次s=4,a=10;第五次 s=5,a=15。29.阅读下面程序:#includeiostream.hfun(int a,int b)int c;c=a+b;return c;void main()int x=6,y=7,z=8,r;r=fun(x-,y+,x+y),z-);coutrend1;则该程序的输出结果是( )。A) 11 B) 20 C) 21 D) 31(分数:2.00)A.B.C. D.解析:解析 由主函数入手,定义变量 x、y、z,然后调用函数 fun,其中的参数为(x-,y+,x+y)的计算结果和 z-的计算结果,所以调用 fun(13,8)计算结果为 21。

41、30.对虚函数的调用( )。A) 一定使用动态联编 B) 必须使用动态联编C) 一定使用静态联编 D) 不一定使用动态联编(分数:2.00)A.B.C.D. 解析:解析 虚函数在运行阶段和类的对象绑定在一起,这样成为动态联编。虚函数声明只能出现在类声明中虚函数原型中,而不能在成员的函数体实现的时候。必须由成员函数来调用或者通过指针、引用来访问虚函数。如果通过对象名来访问虚函数,则联编在编译过程中认为是静态联编。31.下列函数的运行结果是( )。#includeiostream.hint add(int a,int b);void main()extern int x,y;coutadd(x,y

42、)end1;int x(20),y(5);int add(int a,int b)int s=a+b;return s;A) 25 B) 30 C) 20 D) 15(分数:2.00)A. B.C.D.解析:解析 由主函数:main 入手,定义外部变量 x 和 y,调用函数 add。因为 x,y 为外部变量,所以“intx(20),y(5);”的赋值在 add 也是有效的,即 add 函数的运算结果为 25。32.下面程序的输出结果为( )。#includeiostream.hclass TestClasspublic:TestClass () va1+; static int va1;int

43、 TestClass:va1=0;void main()TestClass cs 1 ;coutcs1.va1“;TestClass cs2;TestClass cs3,cs4;coutcs2.va1end1;A) 03 B) 13 C) 14 D) 24(分数:2.00)A.B.C. D.解析:解析 由主函数 main 入手,定义 TestClass 类的对象 cs1,执行 cs1.va1,其中,va1 为静态变量,根据“intTestClass:va1=0;”初始化,TestClass 中的 TestClass()va1+;构造函数执行后,va1 值为 1。主函数中接着定义对象 cs2,c

44、s3,cs4。执行“coutcs2.va1end1;”中的 va1 值为4。33.下面程序的运行结果是( )。#includeiostreamusing namespace std;class TestClassstatic int n;public:TestClass ()n+;static int test()for(int i=0;i4;i+)n+;return n;int TestClass:n=0;int main()cout TestClass:test()“ “;TestClass c1,c2;cout TestClass:test()end1;return 0;A) 4, 10

45、 B) 4, 6 C) 0, 6 D) 0, 4(分数:2.00)A. B.C.D.解析:解析 在主函数中首先调用 TestClass 中的 test 函数输出,类中的 n 为静态数据成员,可以为所有的对象共享这些数据,这里调用后 n 等于 4。定义对象 c1,c2 调用构造函数后:n=6,所以主函数再次执行“coutTestClass:test()end1;”后,n 等于 10。34.当需要将一个函数 bool isnumber(char c)声明为内联函数时,则此内联函数的函数原型为( )。A) enum bool isnumber(char c);B) define bool isnum

46、ber(char c);C) inline bool isnumber(char c);D) extembool isnumber(char c);(分数:2.00)A.B.C. D.解析:解析 此题考查的是内联函数的相关知识点。函数原型应指出函数名、返回值类型以及在调用函数时必须提供的参数的个数和类型,因为要声明为内联函数,故应加 inline 关键字。35.下列关于类和对象的叙述中,错误的是( )。A) 一个类只能有一个对象B) 对象是类的具体实例C) 类是对某一类对象的抽象D) 类和对象的关系是一种数据类型与变量的关系(分数:2.00)A. B.C.D.解析:解析 此题考查的是类和对象的

47、相关概念。类是将不同的数据和与这些数据相关的操作封装起来装在一起的集合体。对象是类的具体实例,也即类是对某一类对象的抽象,类和对象之间可以说是数据类型与变量的关系。一个类可以有无数个对象。36.下列关于成员函数特征的描述中,错误的是( )。A) 成员函数一定是内联函数B) 成员函数可以重载C) 成员函数可以设置参数的默认值D) 成员函数可以是静态的(分数:2.00)A. B.C.D.解析:解析 因为成员函数可以在类体内定义,也可以在类体外定义,所以成员函数不一定都是内联函数;成员函数可以重载,可以设置参数的默认值,成员函数可以是静态的。37.下列关于 C+函数的叙述中,正确的是( )。A) 每

48、个函数至少要具有一个参数B) 每个函数都必须返回一个值C) 函数在被调用之前必须先声明D) 函数不能自己调用自己(分数:2.00)A.B.C. D.解析:解析 此题考查的是函数的性质。当调用无参函数时主函数并不将数据传送给被调函数,且可以带回或不带回函数值。函数的递归调用就是直接或间接的调用自己。38.下列关于虚函数的说明中,正确的是( )。A) 从虚基类继承的函数都是虚函数B) 虚函数不得是静态成员函数C) 只能通过指针或引用调用虚函数D) 抽象类中的成员函数都是虚函数(分数:2.00)A.B. C.D.解析:解析 此题考查的是虚函数的概念。在成员函数的声明前面加上 virtual 关键字,即可把函数声明为虚函数。虚函数可以是另一个函数的友元函数而不能是静态成员函数。39.下列运算符不能重载为友元函数的是(

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

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

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