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

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

1、二级 C+笔试-356 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.一个类的友元函数能够访问该类的(分数:2.00)A.私有成员B.保护成员C.公用成员D.所有成员2.下列叙述中正确的是(分数:2.00)A.软件测试的主要目的是确定程序中错误的位置B.软件调试的主要目的是发现程序中错误的类型C.程序经调试后还应进行测试D.软件的测试与调试工作最好都由程序编制者来完成3.下面说法正确的是(分数:2.00)A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C.类的

2、内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字 inline定义4.关于常成员函数,下列说法中错误的是(分数:2.00)A.常成员函数无法更新对象的数据成员,但可以访问其他类的公用数据成员或全局变量B.常成员函数无法更新对象的数据成员,但是可以更新该对象的常数据成员C.常成员函数既可以被常对象调用,也可以被一般对象调用D.常成员函数不仅要在声明中用到 const修饰符,在定义时也必须使用 const修饰符5.控制格式输入/输出的操作子中,设置域宽的函数是(分数:2.00)A.wsB.octC.setfill(int)D.setw(int)6.数据库概念设计中,由分散到集中的设

3、计方法是(分数:2.00)A.视图设计B.视图集成设计C.集中式模式设计D.分散式模式设计7.下列不能作为类的成员的是(分数:2.00)A.自身类对象的指针B.自身类对象C.数组D.另一个类的对象8.下列能对对象进行初始化的是(分数:2.00)A.构造函数B.析构函数C.友元函数D.静态成员函数9.下列关于虚基类的描述中错误的是(分数:2.00)A.虚基类子对象的初始化由最派生类完成B.虚基类子对象的初始化次数与虚基类下面的派生类个数有关C.设置虚基类的目的是消除二义性D.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数调用10.以下说法中错误的是(分数:2.00)A.

4、strcpy(A,B.函数是将 A字符串的内容复制到 B字符串中 B) strlen(cha*s)返回字符串 S的长度,未尾的字符不计算在内C.char a20=“string“;中字符串长度为 6D.strstr(S1,S2)函数在字符串 S1中从左边开始查找字符串 S2,若查找成功则返回 S2在 S1中首次出现的位置,否则返回 NULL,如果 S2为“,则返回 S1。11.在深度为 6的满二叉树中,叶子结点的个数为(分数:2.00)A.64B.63C.32D.3112.请阅读以下程序main( )int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)ca

5、se 0:a+;break;case 1:b+;break;case 2:a+;b+;break;cout“a=“a“b=“bendl;上面程序的输出结果是(分数:2.00)A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=213.要通过函数实现一种不太复杂的功能,并且要求加快执行速度,则应该选用(分数:2.00)A.重载函数B.内联函数C.静态函数D.虚函数14.设有 char str80;以下不能将输入数据 first/nsecond/nCR读取到数组 str中的语句是(分数:2.00)A.cin.get(str,strlen(str);B.cin.getline(st

6、r,strlen(str);C.cinstr;D.cin.read(str,strlen(str);15.设置虚基类的目的是(分数:2.00)A.简化程序B.消除二义性C.提高程序运行效率D.减少目标代码16.已知一个运行正常的程序中有下面两个语句:int*p1,p2p1=b;由此可知,变量 a和 b的类型分别是(分数:2.00)A.int和 intB.int*和 intC.int和 int*D.int*和 int*17.有如下程序main( )int n5=0,0,0,i,k=2;for(i=0;ik;i+)ni=ni+1;coutnkendl;该程序的输出结果是(分数:2.00)A.不定值

7、B.2C.1D.018.将 7个数据进行插入排序,在最坏情况下需要比较的次数是(分数:2.00)A.42B.6C.7D.2119.执行语句序列ofstream outfile(“DATE.DAT”);if()cout“OK“; else cout“FAIL“后,如果文件打开成功,显示“OK”,否则显示“FAIL“。由此可知,上面 if语句处的表达式是:(分数:2.00)A.outfile.fail( )或 outfileB.outfile.good( )或 outfileC.outfile.good( )或!outfileD.outfile.fail( )或!out file20.对于拷贝构造

8、函数和赋值操作的关系,正确的是(分数:2.00)A.拷贝构造函数和赋值操作是完全一样的操作B.进行赋值操作时,会调用类的构造函数C.当调用拷贝构造函数时,类的对象正在被建立并被初始化D.拷贝构造函数和赋值操作不能在同一个类中被同时定义21.以下程序的功能是按顺序读入 10名学生 4门课程的成绩,计算出每位学生的平均分并输出:main( )int n,k;float score,sum,ave;sum=0.0;for(n=1;n=10;n+)for(k=1;k=4;k+)cinscore;sum+=score;ave=sum/4.0;cout“NO“n“:“aveendl;上述程序运行后结果不正

9、确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是(分数:2.00)A.sum=0.0B.sum+=scoreC.ave=sun/4.0D.cout“N0“n“:“aveendl;22.面向对象的开发方法中,类与对象的关系是(分数:2.00)A.具体与抽象B.抽象与具体C.整体与部分D.部分与整体23.已知类 X成功地重载了- -、+、=、 这几个运算符。则其中肯定属于成员函数的运算符是:(分数:2.00)A.前置- -和 B.=和 C. 和后置- -D.+和=24.设有如图所示的二叉树(分数:2.00)A.FCADBEGB.ACBDFGEC.ABDCGEFD.ACBDFEG25.执

10、行下列语句后,输出结果为 steven的是char*str=“steven“;eout.write(str, );(分数:2.00)A.strlen(str)B.sizeof(str)C.strlen(str+1)D.sizeof(str-1)26.在下列关系运算中,可能改变关系中属性个数的是(分数:2.00)A.并B.差C.投影D.交27.下列描述中正确的是(分数:2.00)A.类中可以定义与类名相同的数据成员B.直接子类中可以定义与父类名相同的数据成员C.孙子类中可以定义与爷爷类名相同的数据成员。D.类的所有子孙中都不可以定义与该类同名的数据成员。28.解决类继承中产生的二义性的方法不包括

11、(分数:2.00)A.使用作用域运算符限定访问的成员函数B.在派生类中定义同名函数,且参数表必须和基类的保持一致C.在派生类中定义同名函数,且参数表可以和基类的不同D.采用虚基类解决多重继承中的共同基类产生的二义性29.下列数据结构中按“先进先出”原则组织数据的是(分数:2.00)A.线性表B.循环队列C.循环链表D.双向链表30.下列关于虚函数与函数重载区别的叙述中不正确的是(分数:2.00)A.函数说明形式上不同B.函数重载允许是非成员函数,虚函数只能是成员函数C.函数重载的调用依据参数和类型的差别,虚函数则依据对象D.函数重载的本体可以在类外定义,虚函数不可以31.下面描述中体现了抽象类

12、特性的语句是(分数:2.00)A.可以说明虚函数B.可以进行构造函数重载C.可以定义友元函数D.不能定义对象32.下列叙述中正确的是(分数:2.00)A.所有形态的二叉树都只能采用链式存储结构B.循环队列是队列的一种存储方式C.栈只能采用顺序存储结构D.循环队列与循环链表都属于链式存储结构33.以下程序的输出结果是main( )int i=0,a=0;while(i20)for(;)if(i%10)=0)break;else i - -;i+=11;a+=i;coutaendl;(分数:2.00)A.21B.32C.33D.1134.在某类的公共部分有声明 string operator+(

13、);和 string operator+(int);则说明(分数:2.00)A.string operator+( );是前置自增运算符声明B.string( )perator+( );是后置自增运算符声明C.string operator+(int);是前置自增运算符声明D.两条语句无区别35.下列关于软件设计基本原理的叙述中错误的是(分数:2.00)A.信息隐蔽是指在一个模块内的信息要使所有的模块都能访问得到B.模块的独立程度是评价软件设计好坏的重要标准C.耦合性用于衡量软件的模块独立性D.内聚性用于衡量软件的模块独立性二、填空题(总题数:15,分数:30.00)36.对 n个元素的序列进

14、行冒泡排序时,最少的比较次数是 1。(分数:2.00)填空项 1:_37.继承使得相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余信息,提高了软件的 1。(分数:2.00)填空项 1:_38.结构化分析方法是面向 1 进行分析的方法。(分数:2.00)填空项 1:_39.在对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第 7个记录 60插入到有序表时,为寻找插入位置需比较 1 次。(分数:2.00)填空项 1:_40.数据库技术的主要特点为 1,具有较高的数据和程序的独立性以及对数据实行集中统一的控制。(分数:2.00)填空项 1:_

15、41.逻辑表达式 x3;class Derived:public Basepublic:void f(char*str)cout“Derived:“strendl;);void main(void)Base*pd=new Base;pd=new Derived;pd-f(a);(分数:2.00)填空项 1:_47.下列程序的执行结果为_。#includeiostream.hclass Myclasspublic:void GetSum(int a);static int Sum;prtvate:int A;int Myclass:Sum=10;/必须在类外部对静态数据成员初始化void Myc

16、lass:GetSum(int a)A=a;Sum+=A:vold PrintSum(Myclassvoid main( )Myclass M,N;M.GetSum(3);N.GetSum(7);PrintSum(M);(分数:2.00)填空项 1:_48.下列程序的执行结果为_。#includeiostream.hclass Pointpublic:Point(double i,double j)x=i;y=j;double Area( )constreturn 0.0;private:double x,y;class Rectangle:public Pointpublic:Rectang

17、le(double i,double J,double k,double 1);double Area( )const(return w*h;private:double w,h;Rectangle:Rectangle(double i,double j,double k,double 1):Point(i,j)w=k;h=l;void fun(Pointvoid main( )Rectangle rec(3.0,5.2,15.0,25.0);fun(rec);(分数:2.00)填空项 1:_49.下列程序用于将源文件中的字母进行大小写转换,while 的条件是_。#includeiostre

18、am.h#includefstream.h#includeiomanip.hvoid main( )char ch;fstream filel,file2;char fnl10,fn210;cout“输入源文件名:“;cinfn1;cout“输入目标文件名:“;cinfn2;filel.open(fnl,ios:in);file2.open(fn2,ios:out);while(_)if(ch=afile2.put(ch);filel.close( );file2.close( );(分数:2.00)填空项 1:_50.以下程序的执行结果是_。#ineludeiostream.hclass S

19、amplepublic:int x;int y;void disp( )cout“x=“x“,y=“yendl;void main( )int Sample:*pc;Sample s;pc=s.*pc=10;pc=s.*pc=20;s.disp( );(分数:2.00)填空项 1:_二级 C+笔试-356 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.一个类的友元函数能够访问该类的(分数:2.00)A.私有成员B.保护成员C.公用成员D.所有成员 解析:解析 在一个类的内部声明,并用 friend修饰的函数称为该类的友员函数,友员函数可以像

20、成员函数一样,访问类的所有级别的成员。友员机制主要用于提高访问效率,但是破坏了类的封装性原则。在程序中适当使用友员函数,并寻求封装和效率之间的一个平衡点,是使用友员技术的一个主要内容。2.下列叙述中正确的是(分数:2.00)A.软件测试的主要目的是确定程序中错误的位置B.软件调试的主要目的是发现程序中错误的类型C.程序经调试后还应进行测试 D.软件的测试与调试工作最好都由程序编制者来完成解析:解析 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷。由于测试的

21、这一特征,一般应当避免由开发者测试自己的程序。测试只能说明程序有错,而不能证明程序无错,希望通过有限次的测试就能发现程序中的所有错误是不可能的,即完全测试是不可能的。因此,选项 A与 D中的说法都是错误的。调试也称排错。测试的目的是暴露错误,而调试的目的是发现错误的位置,并改正错误。经测试发现错误后,可以立即进行调试并改正错误;经过调试后的程序还需进行回归测试,以检查调试的效果,同时也可防止在调试过程中引进新的错误。因此,选项 B中的说法也是错误的,而选项 C中的说法是正确的。3.下面说法正确的是(分数:2.00)A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编

22、译时是将该函数的目标代码插入每个调用该函数的地方 C.类的内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字 inline定义解析:解析 内联函数用 inline修饰,用于取代 C语言中的宏定义。Inline 是个建议机制而不是强制机制,也就是说,程序员可以指定任意函数为 inline函数,但是编译器会根据系统情况来决定是否将其inline处理。对于较大的函数,编译器往往会取消其 inline特性。Inline 函数的特点之一就是执行速度快,他实质是在编译时将函数的目标代码插入到每个调用该函数的地方,从而没有出栈入栈、保护现场等开销,提高了效率。在类体内定义的成员函数,自动被编译

23、器当做内联函数处理,在类体外定义的成员函数,如果用 inline修饰,编译器也认为是一种内联建议。4.关于常成员函数,下列说法中错误的是(分数:2.00)A.常成员函数无法更新对象的数据成员,但可以访问其他类的公用数据成员或全局变量B.常成员函数无法更新对象的数据成员,但是可以更新该对象的常数据成员 C.常成员函数既可以被常对象调用,也可以被一般对象调用D.常成员函数不仅要在声明中用到 const修饰符,在定义时也必须使用 const修饰符解析:解析 本题考察 const修饰符的使用规则,只要考生理解了 const表示“常”的意思就容易举一反三。根据被修饰内容的不同,const 在修饰数据成员

24、,成员函数和对象时,具有特定的含义。很明显,常数据成员是不能被修改的,这一点在选项 B中被破坏,因此可以确定本题答案为 B,如果考生对其他选项难于区分,同样可以得到正确答案。5.控制格式输入/输出的操作子中,设置域宽的函数是(分数:2.00)A.wsB.octC.setfill(int)D.setw(int) 解析:解析 本题需要考生记忆一些输入输出控制操作子,oct 为八进制,setfill 为设置填充符,setw为设置域宽。6.数据库概念设计中,由分散到集中的设计方法是(分数:2.00)A.视图设计B.视图集成设计 C.集中式模式设计D.分散式模式设计解析:解析 数据库概念设计中,由分散到

25、集中的设计方法是视图集成设计。7.下列不能作为类的成员的是(分数:2.00)A.自身类对象的指针B.自身类对象 C.数组D.另一个类的对象解析:解析 类的数据成员可以是任意类型,包括整型,浮点型、字符型、数组、指针和引用,也可以是类自身的指针,另一个类的对象,但不能是类自身的对象,故 B项是错误的。8.下列能对对象进行初始化的是(分数:2.00)A.构造函数 B.析构函数C.友元函数D.静态成员函数解析:解析 对象的初始化工作由构造函数来完成,析构函数则完成对象销毁前的资源回收等工作。静态成员函数为同一类中所有对象所共享。9.下列关于虚基类的描述中错误的是(分数:2.00)A.虚基类子对象的初

26、始化由最派生类完成B.虚基类子对象的初始化次数与虚基类下面的派生类个数有关 C.设置虚基类的目的是消除二义性D.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数调用解析:解析 虚基类主要是为了消除在多重继承中的二义性问题。虚基类对象的初始化次数只于对象的多少有关,与类的层次结构是没有关系的。故本题正确答案为 B。10.以下说法中错误的是(分数:2.00)A.strcpy(A, B.函数是将 A字符串的内容复制到 B字符串中 B) strlen(cha*s)返回字符串 S的长度,未尾的字符不计算在内C.char a20=“string“;中字符串长度为 6D.strstr

27、(S1,S2)函数在字符串 S1中从左边开始查找字符串 S2,若查找成功则返回 S2在 S1中首次出现的位置,否则返回 NULL,如果 S2为“,则返回 S1。解析:解析 strcpy( )函数的一般形式为:strcpy(to,from),该函数将 from字符串中的内容复制到to字符串中,故 A项错误。11.在深度为 6的满二叉树中,叶子结点的个数为(分数:2.00)A.64B.63C.32 D.31解析:解析 二叉树有一个性质:在二叉树的第 k层上,最多有 2k-1(k1)个结点。对于满二叉树来说,最后一层上的叶子结点数正好达到最大值。因此,深度为 6的满二叉树中,叶子结点的个数即是第 6

28、层上结点数的最大值,为2k-1=26-1=3212.请阅读以下程序main( )int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;cout“a=“a“b=“bendl;上面程序的输出结果是(分数:2.00)A.a=2,b=1 B.a=1,b=1C.a=1,b=0D.a=2,b=2解析:解析 本题考察 switch语句的嵌套,以及 break语句的使用规则,不再执行下面的 case语句,如果没有 break语句,则会顺序执行随后语句。据此,读程序可知,内层

29、 switch执行 case 0分支,故 a增 1,跳出内层 switch后,由于没有 break语句;随后执行外层 switch的 case 2分支,a 又增 1,b 增1。故答案为 A。13.要通过函数实现一种不太复杂的功能,并且要求加快执行速度,则应该选用(分数:2.00)A.重载函数B.内联函数 C.静态函数D.虚函数解析:解析 内联 inline函数就是取代宏定义的,在编译时展开,插入到相应的位置,从而减少了系统开销,加快了执行速度。虚函数则是为了取消二义性现象,静态函数则是一个类所有对象的共享函数。14.设有 char str80;以下不能将输入数据 first/nsecond/n

30、CR读取到数组 str中的语句是(分数:2.00)A.cin.get(str,strlen(str);B.cin.getline(str,strlen(str); C.cinstr;D.cin.read(str,strlen(str);解析:解析 本题考察 C+中输入输出流对象的一些常用成员函数的用法。其中 get和 getline的区别在于 getline读取中以“/n“作为输入结束符。故本题中 getline只能接收第一个换行符之前的字符,即first。后面的字符被丢弃。因此正确答案应为 B。15.设置虚基类的目的是(分数:2.00)A.简化程序B.消除二义性 C.提高程序运行效率D.减少

31、目标代码解析:解析 虚基类的目标就是要消除二义性。16.已知一个运行正常的程序中有下面两个语句:int*p1,p2p1=b;由此可知,变量 a和 b的类型分别是(分数:2.00)A.int和 intB.int*和 intC.int和 int* D.int*和 int*解析:解析 本题乍一看让人迷惑,如果找到切入点就可以简单快速的解答本题。观察四个选项可知,变量 a和 b的四种组合分别是四个选项。很明显指针在做值使用时需要加星号修饰,即如*p1=整数变量的形式。故 b不可能是 int型,故可排除 A和 B。另外需要注意的是变量的初始化和赋值是不同的。P2 在声明时就指向变量 a,其值为 a的地址

32、。因此,变量 a应为:int 型,故正确答案为 C。17.有如下程序main( )int n5=0,0,0,i,k=2;for(i=0;ik;i+)ni=ni+1;coutnkendl;该程序的输出结果是(分数:2.00)A.不定值B.2C.1D.0 解析:解析 本题中的 for循环只是起到混淆视听的效果,对结果并没有任何影响。18.将 7个数据进行插入排序,在最坏情况下需要比较的次数是(分数:2.00)A.42B.6C.7D.21 解析:解析 对长度为 n的线性表进行插入排序,在最坏情况下需要 n(n-1)/2次比较,现线性表的长度为 7,在最坏情况下需要比较的次数为 7(7-1)/2=21

33、。19.执行语句序列ofstream outfile(“DATE.DAT”);if()cout“OK“; else cout“FAIL“后,如果文件打开成功,显示“OK”,否则显示“FAIL“。由此可知,上面 if语句处的表达式是:(分数:2.00)A.outfile.fail( )或 outfileB.outfile.good( )或 outfile C.outfile.good( )或!outfileD.outfile.fail( )或!out file解析:解析 本题考查文件流状态判断函数。good( )表示刚进行的操作成功时返回 true,否则返回false。fail( )与 good

34、( )相反,fail( )表示刚进行的操作失败时返回 true,否则返回 false。本题中流对象为 outfile,则 if(! outfile)等同于 if(outfile.fail( ),if(outfile)等同于if(outfile.good)。由上述可知正确答案为 B项。20.对于拷贝构造函数和赋值操作的关系,正确的是(分数:2.00)A.拷贝构造函数和赋值操作是完全一样的操作B.进行赋值操作时,会调用类的构造函数C.当调用拷贝构造函数时,类的对象正在被建立并被初始化 D.拷贝构造函数和赋值操作不能在同一个类中被同时定义解析:解析 在赋值操作中,将发生对象的拷贝操作,但并不说明两者

35、是完全一样的。一般情况下,如果给类定义了赋值操作符,则应该同时定义合适的拷贝构造函数,除非系统默认生成的拷贝构造函数满足赋值操作。实际上,系统默认的拷贝构造函数仅仅将数据成员进行简单的对应赋值,而在多数特殊应用中,这么简单的对应关系是不适用的,这就需要程序员重新定义拷贝构造函数。21.以下程序的功能是按顺序读入 10名学生 4门课程的成绩,计算出每位学生的平均分并输出:main( )int n,k;float score,sum,ave;sum=0.0;for(n=1;n=10;n+)for(k=1;k=4;k+)cinscore;sum+=score;ave=sum/4.0;cout“NO“

36、n“:“aveendl;上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是(分数:2.00)A.sum=0.0 B.sum+=scoreC.ave=sun/4.0D.cout“N0“n“:“aveendl;解析:解析 本题编译没有错误,但是执行结果确实错误的。错误原因在于第一个考生的乘积输入完之后,sun 的值并没有被清空,接着累加第二个考生的分数,随后进行四门平均是错误的。所以需要内层循环和平均值计算完毕后进行 sum的清空。22.面向对象的开发方法中,类与对象的关系是(分数:2.00)A.具体与抽象B.抽象与具体 C.整体与部分D.部分与整体解析:解析 现实

37、世界中的很多事件都具有相似的性质,把几个有相似的属性的操作的对象归为类,也就是说类是具有共同属性、共同方法的对象的集合,是对对象的抽象,它描述了该对象类型的所有对象的性质,而一个对象则是其对应类的一个具体实例。所以本题正确答案为 B。23.已知类 X成功地重载了- -、+、=、 这几个运算符。则其中肯定属于成员函数的运算符是:(分数:2.00)A.前置- -和 B.=和 C. 和后置- -D.+和=解析:解析 赋值运算符=和运算符只能作为成员函数重载,而- -,+则没有限止。24.设有如图所示的二叉树(分数:2.00)A.FCADBEG B.ACBDFGEC.ABDCGEFD.ACBDFEG解

38、析:解析 按照二叉树前序遍历的方法:在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。对本题中的二叉树进行前序遍历的结果应是 FCADBEG。25.执行下列语句后,输出结果为 steven的是char*str=“steven“;eout.write(str, );(分数:2.00)A.strlen(str) B.sizeof(str)C.strlen(str+1)D.sizeof(str-1)解析:解析 本题考察在 C+中,字符串的存放方式,以及不同的字符串函数的作用。其中,

39、strlen 是专门用于求字符串长度的,其自动去掉字符数组后面的那个/0,而 sizeof后面求的则是 str指针,指针在目前的 32位机器中是固定大小的,其值与字符串的长度是没有关系的。故可以排除 B和 D。而选项 C则将/0多考虑了一次。26.在下列关系运算中,可能改变关系中属性个数的是(分数:2.00)A.并B.差C.投影 D.交解析:解析 投影运算是在给定关系的某些域上进行的运算。通过投影运算可以从一个关系中选择出所需要的属性成分,并且按要求排列成一个新的关系,而新关系的各个属性值来自原关系中相应的属性值。因此,经过投影运算后,会取消某些列,即投影运算可能改变关系中属性的个数。27.下

40、列描述中正确的是(分数:2.00)A.类中可以定义与类名相同的数据成员B.直接子类中可以定义与父类名相同的数据成员C.孙子类中可以定义与爷爷类名相同的数据成员。 D.类的所有子孙中都不可以定义与该类同名的数据成员。解析:解析 本题所有选项中均提到了同名数据成员的现象。是否允许同名数据成员存在,关键要看这种同名现象编译器是否能够判断出来,如果可以判断,则是允许的,否则则是禁止的。28.解决类继承中产生的二义性的方法不包括(分数:2.00)A.使用作用域运算符限定访问的成员函数B.在派生类中定义同名函数,且参数表必须和基类的保持一致C.在派生类中定义同名函数,且参数表可以和基类的不同 D.采用虚基

41、类解决多重继承中的共同基类产生的二义性解析:解析 继承中的二义性主要表现在多重继承中具有多条继承路径时,派生类中行为的不确定性。如果强制指定了按照某条路径访问,亦即采用域作用符限定访问的成员函数的方法可以解决之,故选项 A排除。在选项 B和 C中,唯一的区别在于参数表是否一致,我们知道:参数表不一致同名函数属于重载,是不存在二义性问题的,故选项 C是正确答案。关于选项 D,虚基类是 C+中解决二义性的一种有效手段。29.下列数据结构中按“先进先出”原则组织数据的是(分数:2.00)A.线性表B.循环队列 C.循环链表D.双向链表解析:解析 队列是按“先进先出”原则组织数据的,而循环队列只是队列

42、的一种存储形式。因此,循环队列是按“先进先出”原则组织数据的。30.下列关于虚函数与函数重载区别的叙述中不正确的是(分数:2.00)A.函数说明形式上不同B.函数重载允许是非成员函数,虚函数只能是成员函数C.函数重载的调用依据参数和类型的差别,虚函数则依据对象D.函数重载的本体可以在类外定义,虚函数不可以 解析:解析 A 项,B 项,C 项均为虚函数与函数重载的不同之处。但有一点它们是相同的:在类内外定义均可。故 D项错误。31.下面描述中体现了抽象类特性的语句是(分数:2.00)A.可以说明虚函数B.可以进行构造函数重载C.可以定义友元函数D.不能定义对象 解析:解析 抽象类指的是类中至少有

43、一个纯虚函数,纯虚函数是虚函数后有“=0”修饰,表示该函数在本级类中没有实现,类仅用于派生。抽象类存在的唯一目的就是构造类层次,派生出其他类。抽象类与其他类的最大区别就在于抽象类不能实例化。32.下列叙述中正确的是(分数:2.00)A.所有形态的二叉树都只能采用链式存储结构B.循环队列是队列的一种存储方式 C.栈只能采用顺序存储结构D.循环队列与循环链表都属于链式存储结构解析:解析 一般来说,二叉树采用链式存储结构,但由于完全二叉树的特点,采用顺序存储也能方便地访问其中的每一个元素。因此,选项 A中的说法是不对的。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空

44、间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进行人队运算时,只要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。因此,循环队列是队列的一种顺序存储方式,选项 B中的说法是正确的。栈是特殊的线性表,它既能采用顺序存储结构,又能采用链式存储结构。因此,选项 C中的说法也是不对的。前面说过,循环队列是队列的一种顺序存储方式,不属于链式存储结构。因此,选项 D中的说法也是不对的。33.以下程序的输出结果是main( )int i=0,a=0;while(i20)for(;)if(i%10)=0)break;else i - -;i

45、+=11;a+=i;coutaendl;(分数:2.00)A.21B.32 C.33D.11解析:解析 本题是两个循环语句和一个判断语句的嵌套。For 循环的作用是在 i等于 10的时候跳出循环。本题的答案为 B。34.在某类的公共部分有声明 string operator+( );和 string operator+(int);则说明(分数:2.00)A.string operator+( );是前置自增运算符声明 B.string( )perator+( );是后置自增运算符声明C.string operator+(int);是前置自增运算符声明D.两条语句无区别解析:解析 在重载单操作符

46、的过程中,+既可以是前缀运算符,又可以是后缀运算符,C+规定重载后缀+时必须多一个虚拟参数 int,则不带虚拟参数 int的为前缀运算符。35.下列关于软件设计基本原理的叙述中错误的是(分数:2.00)A.信息隐蔽是指在一个模块内的信息要使所有的模块都能访问得到 B.模块的独立程度是评价软件设计好坏的重要标准C.耦合性用于衡量软件的模块独立性D.内聚性用于衡量软件的模块独立性解析:解析 所谓信息隐蔽是指,在一个模块内包含的信息(过程或数据),对于不需要这些信息的其它模块来说是不能访问的。因此,选项 A中的说法是不对的。系统设计的质量主要反映在模块的独立性上。评价模块独立性的主要标准有两个:一是

47、模块之间的耦合,它表明两个模块之间互相独立的程度;二是模块内部之间的关系是否紧密,称为内聚。因此,选项B、C、D 中的说法都是正确的。二、填空题(总题数:15,分数:30.00)36.对 n个元素的序列进行冒泡排序时,最少的比较次数是 1。(分数:2.00)填空项 1:_ (正确答案:n-1)解析:解析 当初始元素正序时,第一趟比较 n-1次,交换数为 0,完成排序。37.继承使得相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余信息,提高了软件的 1。(分数:2.00)填空项 1:_ (正确答案:可重用性)解析:解析 继承的优点是,相似的对象可以共享程序的代码和数据结构,从而大大减少了程序中的冗余信息,提高软件的可重用性,便于软件的修改和维护。38.结构化分析方法是面向 1 进行分析的方法。(分数:2.00)填空项 1:_ (正确答案:数据流)解析:解析 结构化分析方法是需求分析的基本方法。与其他方法相比,结构化分析方法是面向数据流的分析方法。39.在对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第 7个记录 60插入到有序表时,为寻找插入位置需比较 1 次。(分数:2.00)填空项 1:_ (正确答案:3)解析:解析 当要插入 60时,前

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

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

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