ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:84.50KB ,
资源ID:1324755      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1324755.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】二级C++笔试352及答案解析.doc)为本站会员(priceawful190)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

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

1、二级 C+笔试 352 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.控制格式输入/输出的操作子中,设置域宽的的函数足(分数:2.00)A.wsB.octC.setfilll(inD.setw(in2.若有以下定义和语句 int a4,b=3,*p, *q, *w; p= q w=q; qNULL; 则以下选项中错误的语句是(分数:2.00)A.*q=0B.w=pC.*p=a;D.*p=*w;3.关于常成员函数,下列说法中错误的是(分数:2.00)A.常成员函数无法更新对象的数据成员,但可以访问其他类的公用数据成员或全局变量B.常成

2、员函数无法更新对象的数据成员,但是可以更新该对象的常数据成员C.常成员函数既可以被常对象调用,也可以被一般对象调用D.常成员函数不仅要在声明中用到 const 修饰符,在定义时也必须使用 const 修饰苻4.下列有关程序设计的原则中错误的是(分数:2.00)A.对所有的输入数据都要检查数据的合法性B.输入一批数据时,最好使用数据结束标志C.对于不好的程序,尽量重新编写,避免修补D.输出数据要干净,避免加注释5.执行下列程序时输入 123空格456空格789回车,输出结果是 main() char s100; int c. i; scanf(“%c“, scanf(“%d“, scan(“%s

3、“, s); printf(“%c, %d, %s/n“, c,i,s); (分数:2.00)A.123,456,789B.1,456.789C.1,23,456,789D.1,23,4566.设有如图所示的二叉树 (分数:2.00)A.FCADBEGB.ACBDFGEC.ABDCGEFD.ACBDFEG7.请阅读以下程序 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=“ben

4、d1; 上面程序的输出结果是(分数:2.00)A.a=2, b=1B.a=1, b=1C.a=1. b=0D.a=2. b=28.在某类的公共部分有声明 string operator+();和 string operator+(int);则说明(分数:2.00)A.string operator+();是前置自增运算符声明B.string operator+();是后置自增运算符声明C.string operator+(in; 是前置自增运算符声明D.两条语句无区别9.下列关于虚基类的描述中错误的是(分数:2.00)A.虚基类子对象的初始化由最派生类完成B.虚基类子对象的初始化次数与虚基类下

5、面的派生类个数有关C.设置虚基类的目的是消除二义性D.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数调用10.执行下列语句后,输出结果为 steven 的是 Char * str=“steven“; cout. write(str, );(分数:2.00)A.strlen(stB.sizeof(stC.strlen(str+1)D.sizeof(str-1)11.下列数据结构中按“先进先出”原则组织数据的是(分数:2.00)A.线性表B.循环队列C.循环链表D.双向链表12.下列描述中正确的是(分数:2.00)A.类中可以定义与类名相同的数据成员B.直接于类中可以定义

6、与父类名相同的数据成员C.孙子类中可以定义与爷爷类名相同的数据成员。D.类的所有子孙中都不可以定义与该类同名的数据成员。13.在下列关系运算中,可能改变关系中属性个数的是(分数:2.00)A.并B.差C.投影D.交14.对于拷贝构造函数和赋值操作的关系,正确的是(分数:2.00)A.拷贝构造函数和赋值操作是完全一样的操作B.进行赋值操作时,会调用类的构造函数C.当调用拷贝构造函数时,类的对象正在被建立并被初始化D.拷贝构造函数和赋值操作不能在同一个类中被同时定义15.下列叙述中正确的是(分数:2.00)A.软件测试的主要目的是确定程序中错误的位置B.软件调试的主要目的是发现程序中错误的类型C.

7、程序经调试后还应进行测试D.软件的测试与调试工,作最好都由程序编制者来完成16.在深度为 6 的满二叉树中,叶子结点的个数为(分数:2.00)A.64B.63C.32D.3117.有如下程序 main( ) int n5=0,0,0,i, k=2; for(i=0 ik i+)ni=ni+1; coutnkend1; 该程序的输出结果是(分数:2.00)A.不定值B.2C.1D.018.一个类的友元函数能够访问该类的(分数:2.00)A.私有成员B.保护成员C.公用成员D.所有成员19.下列关于虚函数与函数重载区别的叙述中不正确的是(分数:2.00)A.函数说明形式上不同B.函数重载允许是非成

8、员函数,虚函数只能是成员函数C.函数重载的调用依据参数和类型的差别,虚函数则依据对象D.函数重载的本体可以在类外定义,虚函数不可以20.下列叙述中正确的是(分数:2.00)A.所有形态的二叉树都只能采用链式存储结构B.循环队列是队列的一种存储方式C.栈只能采用顺序存储结构D.循环队列与循环链表都属于链式存储结构21.数据库概念设计中,由分散到集中的设计方法是(分数:2.00)A.视图设计B.视图集成设计C.集中式模式设计D.分数式模式设计22.以下程序的输出结果是 main( ) int i=0,a=0: while(i20) for:) if(i%10)=0)break; else i-;

9、i+=11;a+=i; coutaend1; (分数:2.00)A.21B.32C.33D.1123.以下有关类与结构体关系的叙述不正确的是(分数:2.00)A.结构体中只包含数据;类中封装了数据和操作B.结构体的成员对外界通常是开放的;类的成员可以被隐蔽C.用 struct 不能声明一个类型名;而 class 可以声明一个类名D.结构体成员默认为 public;类成员默认为 private24.设有 char str80以下不能将输入数据 first/nsecond/nCR读取到数组 sir 中的语句是(分数:2.00)A.ciget(str, strlen(st);B.cigetline(

10、str, strlen(st);C.cinstr;D.ciread(str, strlen(st);25.下列关于软件设计基本原理的叙述中错误的是(分数:2.00)A.信息隐蔽是指在一个模块内的信息要使所有的模块都能访问得到B.模块的独立程度是评价软件设计好坏的重要标准C.耦合性用于衡量软件的模块独立性D.内聚性用于衡量软件的模块独立性26.要通过函数实现一种不太复杂的功能,并且要求加快执行速度,则应该选用(分数:2.00)A.重载函数B.内联函数C.静态函数D.虚函数27.下面说法正确的是(分数:2.00)A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是

11、将该函数的目标代码插入每个调用该函数的地方C.类的内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字 inline 定义28.以下程序的功能是按顺序读入 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“:“aveend1; 上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是(分

12、数:2.00)A.sum=0.0B.sum+=scoreC.ave=sun/4.0D.cout“No“n“:“aveend1;29.已知一个运行正常的的程序中有下面两个语句: int *p1, *p2 P1=b 由此可知,变量 a 和 b 的类型分别是(分数:2.00)A.int 和 intB.int*和 intC.int 和 int*D.int*和 int30.设置虚基类的目的是(分数:2.00)A.简化程序B.消除二义性C.提高程序运行效率D.减少目杯代码31.下列不能作为类的成员的是(分数:2.00)A.自身类对象的指针B.自身类对象C.自身类对象的引用D.另一个类的对象32.解决类继承

13、中产生的二义性的方法不包括(分数:2.00)A.使用作用城运算符限定访问的成员函数B.在派生类中定义同名函数,且参数表必须和基类的保持一致C.在派生类中定义同名函数,且参数表可以和基类的不同D.采用虚基类解决多重继承中的共同基类产生的二义性33.下面描述中体现了抽象类特性的语句是(分数:2.00)A.可以说明虚函数B.可以进行构造函数重栽C.可以定义友元函数D.不能说明其对象34.下列能对对象进行初始化的是(分数:2.00)A.构造函数B.析构函数C.友元函数D.静态成员函数35.将 7 个数据进行插入排序,在最坏情况下需要比较的次数是(分数:2.00)A.42B.6C.7D.21二、B填空题

14、/B(总题数:15,分数:30.00)36.数据结构分为线性结构和非线性结构,其中循环链表属于U 【1】 /U。(分数:2.00)填空项 1:_37.程序设计分为面向过程程序设计和面向对象程序设计,具有继承性特点的程序设计称为U 【2】 /U程序设计。(分数:2.00)填空项 1:_38.为了在两个关系中提取所有相同的元组,则在交与并这两种关系运算中,应使用U 【3】 /U运算。(分数:2.00)填空项 1:_39.在算法执行过程中所需要的基本运算次数称为算法的U 【4】 /U复杂度。(分数:2.00)填空项 1:_40.数据模型分为格式化模型和非格式化模型,则关系模型属于U 【5】 /U模型

15、。(分数:2.00)填空项 1:_41.逻辑表达式 x3 ; class Derived: public Base public: void f(char * str) cout“Derived:“strend1; ; void main(void) Base * pd=new Base; pd=new Derived; pd-f(a) (分数:2.00)填空项 1:_47.下列程序的执行结果是U 【12】 /U。 #include iostream. h class Myclass public: void GetSum(int a) static int Sum: private: int

16、 A; ; int Myclass: Sum =10; /必须在类外部对静态数据成员初始化 void Myelass: :GetSum(int a) A=a; Sum+=A; void PrintSum(Myclass void main( ) Myclass M,N; M. GetSum(3) N. GetSum(7) PrintSum(M); (分数:2.00)填空项 1:_48.下列程序的执行结果为U 【13】 /U。 #include iostream. h class Point public: Point(double i, double j) x=i; y=j; double A

17、rea() const return 0.0; private: double x, y; ; class Rectangle: public Point public: Rectangle(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=1 void fun(Point void ma

18、in( ) Rectangle rec(3.0, 5.2, 15.0. 25.0); fun(rec) (分数:2.00)填空项 1:_49.下列程序用于将源文件中的字母进行大小写转换,while 的条件是U 【14】 /U。 #includeiostream. h #includefstream. h #includeiomanip. h void main( ) char ch; fstream filel, file2 char fn110, fn210; cout“输入源文件名:“; cinfn1 cout“输入目标文件名:“; tinfn2 file1, open(fn1 ,ios:

19、 :in); file2, open(fn2, ios: out); while(_) if(ch=a (分数:2.00)填空项 1:_50.以下程序的执行结果是U 【15】 /U。 #includeiostream. h class Sample public: int x: int y; void disp() cout“x=“x“,y=“yend1; ; void main() int Sample: * pc; Sample s; pc= s.*pc=10; pc:= s.*pc=20; s.disp(); (分数:2.00)填空项 1:_二级 C+笔试 352 答案解析(总分:100

20、.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.控制格式输入/输出的操作子中,设置域宽的的函数足(分数:2.00)A.wsB.octC.setfilll(inD.setw(in 解析:解析 本题需要考生记忆一些输入输出控制操作子,oct 为八进制,setfill 为设置填充符,setw 为设置域宽操作子。2.若有以下定义和语句 int a4,b=3,*p, *q, *w; p= q w=q; qNULL; 则以下选项中错误的语句是(分数:2.00)A.*q=0B.w=pC.*p=a;D.*p=*w; 解析:解析 指针是一个既强大又危险的技术,C/C+语言之所

21、以灵括高效,原因之一就是采用了指针技术,所以 c/C+特别适合开发系统软件和工具软件在 C#语言中已经取消了指针,而且全部属于托管代码。而在 dotnet 框架中,为了保持兼容性,仍然可以使用 C+,但分托管和非托管代码。本题实际上有个圈套,只要注意到题干中“语句”,而且注意到各个选项中都有分号结尾,就可以判断选项 D 是正确的:语句不是以逗号结尾的。3.关于常成员函数,下列说法中错误的是(分数:2.00)A.常成员函数无法更新对象的数据成员,但可以访问其他类的公用数据成员或全局变量B.常成员函数无法更新对象的数据成员,但是可以更新该对象的常数据成员 C.常成员函数既可以被常对象调用,也可以被

22、一般对象调用D.常成员函数不仅要在声明中用到 const 修饰符,在定义时也必须使用 const 修饰苻解析:解析 本题考察 const 修饰符的使用规则,只要考生理解了 const 表示“常”的意思就容易举一反三。根据被修饰内容的不同,const 在修饰数据成员,成员函数和对象时,具有特定的含义很明显,常数据成员是不能被修改的,这一点在选项 B 中被破坏,因此可以确定本题答案为 B,如果考生对其他选项难于区分,同样可以得到正确答案。4.下列有关程序设计的原则中错误的是(分数:2.00)A.对所有的输入数据都要检查数据的合法性B.输入一批数据时,最好使用数据结束标志C.对于不好的程序,尽量重新

23、编写,避免修补D.输出数据要干净,避免加注释 解析:解析 在程序设计中,优良的风格要求在输出中加入必要的注释因此,选项 D)中的说法是不对的。5.执行下列程序时输入 123空格456空格789回车,输出结果是 main() char s100; int c. i; scanf(“%c“, scanf(“%d“, scan(“%s“, s); printf(“%c, %d, %s/n“, c,i,s); (分数:2.00)A.123,456,789B.1,456.789C.1,23,456,789D.1,23,456 解析:解析 本题实质是考察 C 语言中的格式化输入和输出。在 C+中,输入和输

24、出控制的简易性有了很大提高,无需用户小心输入,而是由编译系统判断其辅人和输出格式。自行进行相应的处理。6.设有如图所示的二叉树 (分数:2.00)A.FCADBEG B.ACBDFGEC.ABDCGEFD.ACBDFEG解析:解析 按照二叉树前序遍历的方法:在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左于树,最后遍历右子树;并且,在遍历左、右子树时,仍然先访问根结点遍历左于树,然后遍历左子树,最后遍历右子树对本题中的二叉树进行前序遍历的结果应是 FCADBEG。7.请阅读以下程序 main( ) int x=1. y=0, a=0, b=0: switch(x) ca

25、se 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; cout“a=“a“b=“bend1; 上面程序的输出结果是(分数:2.00)A.a=2, b=1 B.a=1, b=1C.a=1. b=0D.a=2. b=2解析:解析 本题考察 switch 语句的嵌套,以及 break 语句的使用规则,即 break 中断当前的执行流,不再执行下面的 case 语句,如果没有 break 语句,则会顺序执行随后语句。据此,读程序可知,内层switch 执行 case 0 分支,故 a 增 l,调出内层

26、switch 后,由于没有 break 语句,随后执行外层 switch的 case 2 分支,a 又增 1,b 增 1。故答案为 A。8.在某类的公共部分有声明 string operator+();和 string operator+(int);则说明(分数:2.00)A.string operator+();是前置自增运算符声明 B.string operator+();是后置自增运算符声明C.string operator+(in; 是前置自增运算符声明D.两条语句无区别解析:解析 在重载单操作符的过程中,对于像+和-这样的操作符,不易区分属于前置还是后置,因此C+规定了用一个虚的形参

27、来区分前置和后置。9.下列关于虚基类的描述中错误的是(分数:2.00)A.虚基类子对象的初始化由最派生类完成B.虚基类子对象的初始化次数与虚基类下面的派生类个数有关 C.设置虚基类的目的是消除二义性D.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数调用解析:解析 虚基类主要是为了消除在多重继承中的二义性问题。实际上,说某个类是虚基类,并不是该类本身有什么特殊的地方,而是在继承的时候加上 virtual 修饰词。虚基类不同于抽象类,虚基类是可以被实例化的,派生类初始化时,必须列出虚基类的构造函数调用。虚基类对象的初始化次数只于对象的多少有关,与类的层次结构是没有关系的。

28、故本题正确答案为 B。10.执行下列语句后,输出结果为 steven 的是 Char * str=“steven“; cout. write(str, );(分数:2.00)A.strlen(st B.sizeof(stC.strlen(str+1)D.sizeof(str-1)解析:解析 本题考察在 C+中,字符串的存放方式,以及不同的字符串函数的作用其中, strlen 是专门用于求字符串长度的,其自动去掉字符数组后面的那个/0,而 sizeof 后面求的则是 str 指针,指针在目前的 32 位机器中是固定大小的,其值与字符中的长度是没有关系的。故可以排除 B 和 D。而选项 C 则将/

29、0多考虑了一次。11.下列数据结构中按“先进先出”原则组织数据的是(分数:2.00)A.线性表B.循环队列 C.循环链表D.双向链表解析:解析 队列是按“先进先出”原则组织数据的,而循环队列只是队列的一种存储形式。因此,循环队列是按“先进先出”原则组织数据的。12.下列描述中正确的是(分数:2.00)A.类中可以定义与类名相同的数据成员B.直接于类中可以定义与父类名相同的数据成员C.孙子类中可以定义与爷爷类名相同的数据成员。 D.类的所有子孙中都不可以定义与该类同名的数据成员。解析:解析 本题所有选项中均提到了同名数据成员的现象。是否允许同名数据成员存在,关键要看这种同名现象编译器是否能够判断

30、出采,如果可以判断,则是允许的,否则则是禁止的。13.在下列关系运算中,可能改变关系中属性个数的是(分数:2.00)A.并B.差C.投影 D.交解析:解析 投影运算是在给定关系的某些域上进行的运算。通过投影运算可以从一个关系中选择出所需要的属性成分,并且按要求排列成一个新的关系,而新关系的各个属性值来自原关系中相应的属性值;因此,经过投影运算后,会取消某些列,即投影运算可能改变关系中属性韵个数。14.对于拷贝构造函数和赋值操作的关系,正确的是(分数:2.00)A.拷贝构造函数和赋值操作是完全一样的操作B.进行赋值操作时,会调用类的构造函数C.当调用拷贝构造函数时,类的对象正在被建立并被初始化

31、D.拷贝构造函数和赋值操作不能在同一个类中被同时定义解析:解析 在赋值操作中,将发生对象的拷贝操作,但并不说明两者是完全一样的一般情况下,如果绐类定义了赋值操作符,则应该同时定义合适的拷贝构造函数,除非系统默认生成的拷贝构造函数满足赋值操作。实际上,系统默认的拷贝构造函数仅仅将数据成员进行简单的对应赋值,而在多数特殊应用中,这么简单的对应关系是不适用的,这就需要程序员重新定义拷贝构造函数。15.下列叙述中正确的是(分数:2.00)A.软件测试的主要目的是确定程序中错误的位置B.软件调试的主要目的是发现程序中错误的类型C.程序经调试后还应进行测试 D.软件的测试与调试工,作最好都由程序编制者来完

32、成解析:解析 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。 测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷。 由于测试的这一特征,一般应当避免由开发者测试自己的程序。 测试只能说明程序有错,而不能证明程序无错,希望通过有限次的测试就能发现程序中的所有错误是不可能的,即完全测试是不可能的。 因此,选项 A)与 D)中的说法都是错误的。 调试也称排错。 测试的目的是暴露错误,而调试的目的是发现错误的位置,并改正错误。 经测试发现错误后,可以立即进行调试并改正错误;经过调试后的程序还需进行回归测试:以检查

33、调试的效果,同时也可防止在调试过程中引进新的错误。 因此,选项 B)中的说法也是错误的,而选项 C)中的说法是正确的。16.在深度为 6 的满二叉树中,叶子结点的个数为(分数:2.00)A.64B.63C.32 D.31解析:解析 二叉树有一个性质;在二叉树的第 k 层上,最多有 2k-1(k1)个结点。对于满二叉树来说,最后一层上的叶子结点数正好达到最大值。因此,深度为 6 的满二叉树中,叶子结点的个数即是第 6 层上结点数的最大值,为2k-12 6-1=3217.有如下程序 main( ) int n5=0,0,0,i, k=2; for(i=0 ik i+)ni=ni+1; coutnk

34、end1; 该程序的输出结果是(分数:2.00)A.不定值B.2C.1D.0 解析:解析 本题较为简单,实际上其中的 for 循环只是起到混淆视听的效果,对结果并没有任何影响。18.一个类的友元函数能够访问该类的(分数:2.00)A.私有成员B.保护成员C.公用成员D.所有成员 解析:解析 在一个类的内部声明,并用 friend 修饰的函数称为该类的友员函数,友员函数可以像成员函数一样,访问类的所有级别的成员。友员机制主要用于提高访问效率但是破坏了类的封装性原则。在程序中适当使用友员函数,并寻求封装和效率之间的一个平衡点,是使用友员技术的一个主要内容。19.下列关于虚函数与函数重载区别的叙述中

35、不正确的是(分数:2.00)A.函数说明形式上不同B.函数重载允许是非成员函数,虚函数只能是成员函数C.函数重载的调用依据参数和类型的差别,虚函数则依据对象D.函数重载的本体可以在类外定义,虚函数不可以 解析:解析 虚函数和函数重载的区别比较大,只要清楚各个概念的基本知识就足以判断出本题的正确答案为,D。20.下列叙述中正确的是(分数:2.00)A.所有形态的二叉树都只能采用链式存储结构B.循环队列是队列的一种存储方式 C.栈只能采用顺序存储结构D.循环队列与循环链表都属于链式存储结构解析:解析 一般来说,二叉树采用链式存储结构,但由于完全二叉树的特点,采用顺序存储也能方便地访问其中的每一个元

36、素。因此,选项 A)中的说法是不对的。 所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进行人队运算时,只要存储空间的第一个位置空闲,便可将元素加人到第一个位置,即将存储空间的第一个位置作为队尾。因此,循环队列是队列的一种顺序存储方式,选项 B)中的说法是正确的。 栈是特殊的线性表,它既能采用顺序存储结构,又能采用链式存储结构。因此,选项 C)中的说法也是不对的。 前面说过,循环队列是队列的一种顺序存储方式,不属于链式存储结构因此,选项 D)中的说法也是不对的。21.数据库概念设计中,由

37、分散到集中的设计方法是(分数:2.00)A.视图设计B.视图集成设计 C.集中式模式设计D.分数式模式设计解析:解析 数据库概念设计中,由分散到集中的设计方法是视图集成设计。22.以下程序的输出结果是 main( ) int i=0,a=0: while(i20) for:) if(i%10)=0)break; else i-; i+=11;a+=i; coutaend1; (分数:2.00)A.21B.32 C.33D.11解析:解析 本题是两个循环语句和一个判断语句的嵌套。对于这类试题,只要考生基础知识扎实,细心判断,一般是没有多大难度的。For 循环的作用是在 i 等于 10 的时候跳出

38、循环,本题的答案为 B。23.以下有关类与结构体关系的叙述不正确的是(分数:2.00)A.结构体中只包含数据;类中封装了数据和操作B.结构体的成员对外界通常是开放的;类的成员可以被隐蔽C.用 struct 不能声明一个类型名;而 class 可以声明一个类名 D.结构体成员默认为 public;类成员默认为 private解析:解析 类和结构体有着密切的血缘关系。类可以看做是将动作和数据都封装的结构体,当然结构体本身是没有动作的。另外,结构体中的成员对外界访问是没有限制的,而类的成员却是有不同的访问级别限制。24.设有 char str80以下不能将输入数据 first/nsecond/nCR

39、读取到数组 sir 中的语句是(分数:2.00)A.ciget(str, strlen(st);B.cigetline(str, strlen(st); C.cinstr;D.ciread(str, strlen(st);解析:解析 本题考察 C+中输入输出流对象的一些常用成员函数的用法。其中 get 和 getline 的区别在于 getline 读取中以“/n”作为辅入结束符。故本题中 getline 只能接收第一个换行符之前的字符,即first,后面的字符被丢弃。因此正确答案应为 B。25.下列关于软件设计基本原理的叙述中错误的是(分数:2.00)A.信息隐蔽是指在一个模块内的信息要使所

40、有的模块都能访问得到 B.模块的独立程度是评价软件设计好坏的重要标准C.耦合性用于衡量软件的模块独立性D.内聚性用于衡量软件的模块独立性解析:解析 所谓信息隐蔽是指,在一个模块内包含的信息(过程或数据),对于不需要这些信息的其它模块来说是不能访问的。因此,选项 A)中的说法是不对的。 系统设计的质量主要反映在模块的独立性上。评价模块独立性的主要标准有两个:一是模块之间的耦合,它表明两个模块之间互相独立的程度;二是模块内部之间的关系是否紧密,称为内聚。因此,选项 B)、C)、D)中韵说法都是正确的。26.要通过函数实现一种不太复杂的功能,并且要求加快执行速度,则应该选用(分数:2.00)A.重载

41、函数B.内联函数 C.静态函数D.虚函数解析:解析 内联 inline 函数就是取代宏定义的,在编译时展开,插入到相应的位置,从而减少了系统开销,加快了执行速度。虚函数则是为了取消二义性现象,静态函数则是一个类所有对象的共享函数。27.下面说法正确的是(分数:2.00)A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 C.类的内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字 inline 定义解析:解析 内联函数用 inline 修饰,用于取代 C 语言中的宏定义。Inline 是个建议机制而不是强

42、制机制,也就是说,程序员可以指定任意函数为 inline 函数,但是编译器会根据系统情况来决定是否将其inline 处理。对于较大的函数,编译器往往会取消其 inline 特性。Inline:函数的特点之一就是执行速度快,他实质是在编译时将函数的目标代码插入到每个调用该函数的地方,从而没有出栈入栈、保护现场等开销,提高了效率。在类体内定义的成员函数,自动被编译器当做内联函数处理,在类体外定义的成员函数,如果用 inline 修饰,编译器也认为是一种内联建议。28.以下程序的功能是按顺序读入 10 名学生 4 门课程的成绩,计算出每位学生的平均分并输出: main( ) int n, k, fl

43、oat 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“:“aveend1; 上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是(分数:2.00)A.sum=0.0 B.sum+=scoreC.ave=sun/4.0D.cout“No“n“:“aveend1;解析:解析 本题编译没有错误,但是执行结果确实错误的。细心的考生可以发现,第一个考生的乘积输入完之后,sun 的值并没有被清空,接着累加第二个考

44、生的分数,随后进行四门平均是错误的,所以需要内层循环和平均值计算完毕后进行 sum 的清空。29.已知一个运行正常的的程序中有下面两个语句: int *p1, *p2 P1=b 由此可知,变量 a 和 b 的类型分别是(分数:2.00)A.int 和 intB.int*和 intC.int 和 int* D.int*和 int解析:解析 本题乍一看让人迷惑,如果找到切入点就可以简单快速的解答本题;观察四个选项可知,变量 a 和 b 的四种组合分别是四个选项。很明显指针在做值使用时需要加星号修饰,即如*p1 =整数变量的形式。故 b 不可能是 int 型,故可排除 A 和 B。另外需要注意的是变

45、量的初始化和赋值是不同的P2 在声明时就指向变量 a,其值为 a 的地址;因此,变量 a 应为 int 型,故正确答案为 C。30.设置虚基类的目的是(分数:2.00)A.简化程序B.消除二义性 C.提高程序运行效率D.减少目杯代码解析:解析 虚基类的目标就是要消除二义性。尽管:C+或其他 OO 语言支持多重继承,但在实际软件开发中多重继承用的并不多,原因在于多重继承过手复杂。因此,在 C#中已经不再支持多重继承了。31.下列不能作为类的成员的是(分数:2.00)A.自身类对象的指针B.自身类对象 C.自身类对象的引用D.另一个类的对象解析:解析 引用是 C+中引入的新概念,可以理解为:看着像

46、变量,实际同指针,故选项 A 和 C 相同,可以排除。在 OO 开发中,类之间的关系报重要,具体到程序中,类之间的关系就体现为类对象之间的has a 或 is a 关系上,一个类对象作为另外一个类的成员是很常见的现象。自身类对象做类的成员将引起无限递归。故本题正确答案为 B。32.解决类继承中产生的二义性的方法不包括(分数:2.00)A.使用作用城运算符限定访问的成员函数B.在派生类中定义同名函数,且参数表必须和基类的保持一致C.在派生类中定义同名函数,且参数表可以和基类的不同 D.采用虚基类解决多重继承中的共同基类产生的二义性解析:解析 继承中的二义性主要表现在多重继承中具有多条继承路径时,

47、派生类中行为的不确定性。如果强制指定了按照某条路径访问,亦即采用域作用符限定访问的成员函数的方法可以解决之,故选项 A排除。在选项 B 和 C 中,唯一的区别在于参数表是否一致,我们知道:参数表不一致同名函数属于重载,是不存在二义性问题的,故选项 C 是正确答案。关于选项 D,虚基类是 C+中解决二义性的一种有效手段。33.下面描述中体现了抽象类特性的语句是(分数:2.00)A.可以说明虚函数B.可以进行构造函数重栽C.可以定义友元函数D.不能说明其对象 解析:解析 抽象类指的是类中至少有一个纯虚函数,纯虚函数是虚函数后有“=0”修饰,表示该函数在本级类中没有实现,类仅用于振生。抽象类存在的唯一目的就是构造类层次,派生出其他类。抽象类与其他类韵最大区别就在于抽象类不能实例化。34.下列能对对象进行初始化的是(分数:2.00)A.构造函数 B.析构函数C.友元函数D.静态成员函数解析:解析 对象的初始化工作由构造函数来完成,析构函数则完成对象销毁前

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