【计算机类职业资格】二级C++-80及答案解析.doc

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

1、二级 C+-80 及答案解析(总分:66.00,做题时间:90 分钟)一、选择题(总题数:20,分数:36.00)1.语句 ofstream f(“SALARY. DAT“, ios: :app | ios: :binary) ;的功能是建立流对象 f,试图打开文件 SALARY.DAT 并与之连接,并且(分数:2.00)A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B.若文件存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件2.一个函数为 void f

2、(int,char ch=“a“),另一个函数为 void f(int),则它们(分数:1.00)A.不能在同一程序中定义B.可以在同一程序中定义并可重载C.可以在同一程序中定义,但不可以重载D.以上说法均不正确3.下列各组类型声明符中,含义相同的一组是(分数:2.00)A.unsigned long int 和 longB.signed short int 和 shortC.unsigned short 和 shortD.shinl int 和 short4.下列叙述中正确的是(分数:2.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是尽可能多的发现程序中的错误C.软件测试的目

3、的是使程序运行结果正确D.软件测试的目的是使程序符合结构化原则5.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是 _ 。(分数:2.00)A.控制流B.加工C.数据存储D.源和潭6.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的(分数:1.00)A.安全性B.一致性C.可理解性D.合理性7.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件),下面属于系统软件的是_。(分数:2.50)A.编辑软件B.操作系统C.教务管理系统D.浏览器8.下列各类函数中,不是类的成员函数

4、的是 _ 。(分数:2.00)A.构造函数B.抽象类C.派生类D.以上都不对9.下列关于运算符重载的描述中,正确的是(分数:2.00)A.运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B.一元运算符只能作为成员函数重载C.二元运算符重载为非成员函数时,参数表中有一个参数D.C+中可以重载所有的运算符10.在 C语言中,封装是借助于什么达到的?(分数:2.00)A.结构B类C.数组D.函数11.下列程序的输出结果是 _ 。 #includeiostream.h main() int m=5; if(m+5) coutm; else coutm-; (分数:2.00)A.7B.6C.

5、5D.412.有以下类定义 class MyClass public: MyClass() coutl;) ; 则执行语句 MyClassa,b2,*p2;后,程序的输出结果是(分数:2.00)A.11B.111C.1111D.1111113.有如下程序: #includeiostream using namespaee std; class A public: virtual void func1() cout“A1“; void rune2() cout“A2“; ; class B: public A public: void func1() cout“B1“; void func2()

6、 cout“B2“; ; int main() A*P=new B; P-func1(); P-func2(); delete P; return 0; 执行这个程序的输出结果是_。(分数:1.00)A.B1B2B.A1A2C.B1A2D.A18214.下面程序的输出是 main() int x=100, a=10, b=20, ok1=5, ok2=0; if(ab) if(b! =15) if( ! ok1) else if(ok2) x= 10 x=-1 coutxend1; (分数:2.00)A.-1B.0C.1D.不确定的值15.以下程序输出的结果是 _ 。 #includeiost

7、ream using namespace std; int main() int *x,*y,z=10; y= coutx“-“yend1; 输出结果为 1。 (分数:2.00)27.下列程序编译错误,因为 add 函数返回值是一个引用,故对 return 返回值的要求是 1。 #includediostream.h int “语句后得到的输出结果为 _ 1_ 。 (分数:2.00)31.下面程序的运行结果是 1 和 2。 #includeiostream.h) #define N 10 #define s(x)x*x #define f(x)(x*x) void main() int i1,

8、i2; i11000/s(N);i21000/f(N); couti1“i2; (分数:2.00)32.完成下列类的构造函数,初始化语句为 _ 1_ 。 #include iostream. h class Test private: int x, y; public, void Test(int initx, int inity) 2 void printx() coutx“y“=“x-y; ; void main() Test x(300, 200); x. printx(); (分数:2.00)33.类中包含了一个静态成员函数,则 main 函数中和 P.f1(P);语句具有同样功能的语

9、句为 1。 #includeiostream.h class M public: M(int A)Aa;B+a; static void f1(M m); private: int A; static int B; void M:f1(M m) cout“A=“m.A(end1; cout“B”m.Bend1; int M:B10; void main() M P(5); P.f1(P); (分数:2.00)34.阅读下面程序: #include iostream.h int fun(int a,int b) int t; c=a*b: return c; void main() int a=

10、3,b=5,c=4,x=0; x=fun(fun(a,b),c); coutxendl; 其运行结果是 1。 (分数:2.00)35.以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类 node,它包含点值和指向上一个节点的指针 prev;另一个类是栈类 stack, 它包含栈的头指针 top。 生成的链式栈如下图所示。 img src=“tp/jsj/2jc+j28.1.gif“ 下面是实现程序,请填空完成此程序。 #include iostream using namespace std; class stack; class node int data; node *prev;

11、 public: node(int d, node *n) data=d; prev=n; friend class stack; ; class stack node *top; /栈头 public: stack() top=0; void push(int i) node *n= 1; top=n; int pop() node *t=top; if (top) top=top-prev; int c= t-data; delete t; return c; return 0; int main () stack s; s.push(6); s.push(3); s.push (1);

12、return 0; (分数:1.00)36.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于 _ 1_ 测试。 (分数:2.00)37.虚函数必须是类的 1。 (分数:2.00)二级 C+-80 答案解析(总分:66.00,做题时间:90 分钟)一、选择题(总题数:20,分数:36.00)1.语句 ofstream f(“SALARY. DAT“, ios: :app | ios: :binary) ;的功能是建立流对象 f,试图打开文件 SALARY.DAT 并与之连接,并且(分数:2.00)A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件 B.若文件存在,

13、将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件解析:解析 本题考查的是文件流的操作, app 表示以追加方式打开文件(即将指针移至文件尾) , binary 表示以二进制方式打开文件。2.一个函数为 void f(int,char ch=“a“),另一个函数为 void f(int),则它们(分数:1.00)A.不能在同一程序中定义B.可以在同一程序中定义并可重载C.可以在同一程序中定义,但不可以重载 D.以上说法均不正确解析:解析 本题函数的调用。只要满足参数列表不同的条件,就

14、可以在同一程序中对同名的函数进行定义。但是由于其中一个函数有默认值,因此当程序中出现语句“x=f(10);”时,就会产生二义性,不能确定调用函数 f(10)还是调用函数 f(10,“a“),此时这两个函数不能重载。3.下列各组类型声明符中,含义相同的一组是(分数:2.00)A.unsigned long int 和 longB.signed short int 和 short C.unsigned short 和 shortD.shinl int 和 short解析:解析 signed short int(有符号短整型数),简写为 short 或 int,字长为 2 字节共 16 位二进制数,

15、数的范围是-3276832767。加上不同的修饰符,整型数有以下几种类型:signed long int(有符号长整型数),简写为 long,字长为 4 字节共 32 位二进制数,数的范围是-21474836482147483647;unsigned short int(无符号短整型数),简写为 unsigned int,字长为 2 字节共 16 位二进制数,数的范围是 065535;unsigned:long int(无符号长整型数),简写为 unsigned long,字长为 4 字节共 32 位二进制数,数的范围是 04294967295。4.下列叙述中正确的是(分数:2.00)A.软件

16、测试的目的是证明程序是否正确B.软件测试的目的是尽可能多的发现程序中的错误 C.软件测试的目的是使程序运行结果正确D.软件测试的目的是使程序符合结构化原则解析:解析 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。 由此可知,测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷。测试只能说明程序有错,而不能证明程序无错,希望通过有限次的测试就能发现程序中的所有错误是不可能的,即完全测试是不可能的。5.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图

17、符的是 _ 。(分数:2.00)A.控制流 B.加工C.数据存储D.源和潭解析:解析 数据流图由 4 种基本成分构成:数据流,数据处理(即加工),数据存储和外部实体 (即源和潭)。而控制流式程序流程图中的图符,它不属于数据流图的合法图符。6.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的(分数:1.00)A.安全性B.一致性C.可理解性 D.合理性解析:解析:结构化程序设计方法设计出的程序具有明显的优点。其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。其中,人们更重视前者。7.软件按功能可以分为应用软件、系统软件和

18、支撑软件(或工具软件),下面属于系统软件的是_。(分数:2.50)A.编辑软件B.操作系统 C.教务管理系统D.浏览器解析:解析 编辑软件和浏览器属于工具软件,教务系统是应用软件。8.下列各类函数中,不是类的成员函数的是 _ 。(分数:2.00)A.构造函数B.抽象类C.派生类 D.以上都不对解析:解析 构造函数包括默认构造函数和拷贝构造函数等,析构函数和构造函数一样属于类的特殊的成员函数。而友元函数则是为了增加类的访问灵活性而允许其他类的成员函数或全局函数访问类的内部变量或成员函数的一种机制,其缺点是破坏了类的封装性。9.下列关于运算符重载的描述中,正确的是(分数:2.00)A.运算符重载为

19、成员函数时,若参数表中无参数,重载的是一元运算符 B.一元运算符只能作为成员函数重载C.二元运算符重载为非成员函数时,参数表中有一个参数D.C+中可以重载所有的运算符解析:解析 本题考查的知识点是:运算符的重载。运算符重载为成员函数时,形参个数一般为运算符的元数减 1,因为此成员函数所属的对象可成为运算符的一个运算分量。重载为非成员函数时,形参个数一般和运算符元数相等。所以,二元运算符重载为非成员函数时,参数表中应有两个参数,选项 C 不正确;运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符,选项 A 是正确的。一元运算符中,“-”取负、“+”增 1、“-”减 1 等运算符均可重载

20、为成员函数,故选项 B 不正确。 C+中,有“.”、“.*”、“-*”、“:”、“?:”五个运算符不能重载,故选项 D 不正确。本题应该选择 A。10.在 C语言中,封装是借助于什么达到的?(分数:2.00)A.结构B类 C.数组D.函数解析:解析 C基本的性质就是它的封装性,而封装性主要是靠类来实现的。11.下列程序的输出结果是 _ 。 #includeiostream.h main() int m=5; if(m+5) coutm; else coutm-; (分数:2.00)A.7B.6 C.5D.4解析:解析 此题中,因为 m+5 成立(此时 m 的值变为 6),所以执行语句 cout

21、m;输出结果为6。12.有以下类定义 class MyClass public: MyClass() coutl;) ; 则执行语句 MyClassa,b2,*p2;后,程序的输出结果是(分数:2.00)A.11B.111 C.1111D.11111解析:解析 本题考核构造函数和析构函数。题中定义了类 MyClass 的对象 a,对象数据 b,所以调用了构造函数 3 次,输出 111。然后定义了对象指针*p2,由于指针没有实例话,所以不会调用构造函数。13.有如下程序: #includeiostream using namespaee std; class A public: virtual

22、void func1() cout“A1“; void rune2() cout“A2“; ; class B: public A public: void func1() cout“B1“; void func2() cout“B2“; ; int main() A*P=new B; P-func1(); P-func2(); delete P; return 0; 执行这个程序的输出结果是_。(分数:1.00)A.B1B2B.A1A2C.B1A2 D.A182解析:解析 本题考查虚函数。虚函数指在基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数。题中定义了一个派生类

23、对象 B,并使用类 A 的对象指针指向 B,由于基类 A 中的 func1 为虚函数,所以会执行派生类的 func1,输出 B1,而基类中的 func2 不是虚函数,所以 p-func2()会执行基类的 func2,输出 A2。故答案为 C。14.下面程序的输出是 main() int x=100, a=10, b=20, ok1=5, ok2=0; if(ab) if(b! =15) if( ! ok1) else if(ok2) x= 10 x=-1 coutxend1; (分数:2.00)A.-1 B.0C.1D.不确定的值解析:解析 本题考察订语句的嵌套,else 总是与最近的那个 i

24、f 配对,只要考生按照逻辑表达式的值进行细心判断就可以得到正确的答案。考生需要注意的是,在 C+语言中,0 表示假,非 0 即为真,因此可以用数字作为逻辑判断的依据。15.以下程序输出的结果是 _ 。 #includeiostream using namespace std; int main() int *x,*y,z=10; y= coutx“-“yend1; 输出结果为 1。 (分数:2.00)解析:1-1解析 题目中首先定义了一个变量 x,并初始化为 1,然后为 x 添加一个别名 y。第二条语句将依次输出 x 的值,“-“,及 y 的值,而 y 是 x 的别名,所以也输出 x 的值,即

25、答案为 1-1。27.下列程序编译错误,因为 add 函数返回值是一个引用,故对 return 返回值的要求是 1。 #includediostream.h int “语句后得到的输出结果为 _ 1_ 。 (分数:2.00)解析:C解析 本题考察强制类型转化,char()在这里作为一个强制类型转化函数存在,将整数转化为字符。31.下面程序的运行结果是 1 和 2。 #includeiostream.h) #define N 10 #define s(x)x*x #define f(x)(x*x) void main() int i1,i2; i11000/s(N);i21000/f(N); c

26、outi1“i2; (分数:2.00)解析:1000 10。 解析 对于 define 宏定义语句,系统会在编译前进行替换。本题替换过程如下: i11000/s(N) i1=1000/s(10) i1=1000/10*10 i11000 i21000/f(N) i2=1000/(10) i2=1000/(10*10) i2=1032.完成下列类的构造函数,初始化语句为 _ 1_ 。 #include iostream. h class Test private: int x, y; public, void Test(int initx, int inity) 2 void printx()

27、coutx“y“=“x-y; ; void main() Test x(300, 200); x. printx(); (分数:2.00)解析:x=initx; y=inity;解析 本题考查的是类的私有数据如何从接口成员函数那里数据的。本题虽然简单,却体现了类的数据封装思想,并指明了如何完成这种封装。33.类中包含了一个静态成员函数,则 main 函数中和 P.f1(P);语句具有同样功能的语句为 1。 #includeiostream.h class M public: M(int A)Aa;B+a; static void f1(M m); private: int A; static

28、int B; void M:f1(M m) cout“A=“m.A(end1; cout“B”m.Bend1; int M:B10; void main() M P(5); P.f1(P); (分数:2.00)解析:M:f1(P);。解析 由于 f1 是类 M 的静态成员函数,即说明类 M 的任何对象都共享一份 f1,因此,不仅可以从对象那里访问 f1,还可以用域操作符:通过类名来访问。34.阅读下面程序: #include iostream.h int fun(int a,int b) int t; c=a*b: return c; void main() int a=3,b=5,c=4,x

29、=0; x=fun(fun(a,b),c); coutxendl; 其运行结果是 1。 (分数:2.00)解析:6035.以下程序实现栈的入栈和出栈的操作。其中有两个类:一个是节点类 node,它包含点值和指向上一个节点的指针 prev;另一个类是栈类 stack, 它包含栈的头指针 top。 生成的链式栈如下图所示。 img src=“tp/jsj/2jc+j28.1.gif“ 下面是实现程序,请填空完成此程序。 #include iostream using namespace std; class stack; class node int data; node *prev; publi

30、c: node(int d, node *n) data=d; prev=n; friend class stack; ; class stack node *top; /栈头 public: stack() top=0; void push(int i) node *n= 1; top=n; int pop() node *t=top; if (top) top=top-prev; int c= t-data; delete t; return c; return 0; int main () stack s; s.push(6); s.push(3); s.push (1); return

31、 0; (分数:1.00)解析:new node(i,top) 解析 本题考核友元类以及对象成员的应用,属于综合考题。本程序中定义了两个类 node 和 stack,用于实现堆栈的压入和弹出操作。其中,类 stack 是类 node 的友元类,这样类stack 中的成员可以访问类 node 中的所有成员。在类 node 中,定义两个私有变量:整型变量 data 和对象指针 prev。变量 data 用于保存节点的数值,而对象指针 prey 用于指向上一节点。在类 node 的构造函数中,形参是数据 d 和对象指针 n。在类 stack 中,定义了一个私有变量,栈顶指针 top,并在构造函数中赋

32、值 0(即指针为空)。 函数 push()实现入栈操作,即把形参 i 压入栈中,那么此时应该创建一个新的节点,并让这个节点的prev 指针指向栈顶,即 top。然后让 top 指针指向新的节点。所以在 push()函数中应填入“node*n=new node(i,top)”。类 stack 中的 pop()函数实现数据的弹出功能。先定义了一个对象指针 t 指向栈顶节点。然后判断堆栈是否为空,如果为空,则返回 0,否则就弹出栈顶节点的值。那么应该先将栈顶指针后退一个节点,然后把对象 t 指针指向的节点值弹出,并删除节点 t。36.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于 _

33、1_ 测试。 (分数:2.00)解析:黑箱或黑盒或黑箱(盒)解析 本题考查软件工程的测试。对于软件测试而言,黑箱(盒)测试是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当的接收输入数据产生正确的输出信息。与黑箱(盒)测试相反,白箱(盒)测试的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。它按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按照预定要求正确处理,等价类划分是把所有可能的输入数据(有效的和无效的)划分成若干个等价类,则可以合理的做出下述假定:每类中的一个典型值在测试中的作用与这一类中所有其他值的作用相同。显然,等价类划分完全不考虑程序的内部结构和处理过程,因此它属于黑箱(盒)测试。37.虚函数必须是类的 1。 (分数:2.00)解析:成员函数

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

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

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