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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文([计算机类试卷]2013年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc)为本站会员(diecharacter305)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]2013年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc

1、2013年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析 1 阅读以下说明和流程图,填补流程图中的空缺 (1) (5),将解答填入答题纸的对应栏内。【说明】 两个包含有限个元素的非空集合 A、 B的相似度定义为|AB|/|A B|,即它们的交集大小 (元素个数 )与并集大小之比。 以下的流程图计算两个非空整数集合 (以数组表示 )的交集和并集,并计算其相似度。已知整数组A1: m和 B1: n分别存储了集合 A和 B的元素 (每个集合中包含的元素各不相同 ),其交集存放于数组 C1: s,并集存放 于数组 D1: t,集合 A和 B的相似度存放于 SIM。 例如,假设

2、 A=1, 2, 3, 4, B=1, 4, 5, 6,则 C=1, 4),D=1, 2, 3, 4, 5, 6), A与 B的相似度 SIM=1 3。【流程图】2 阅读以下说明和 C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。【说明】 下面的函数 sort(int n, int a)对保存在数组 a中的整数序列进行非递减排序。由于该序列中的元素在一定范围内重复取值,因此排序方法是先计算出每个元素出现的次数并记录在数组 b中,再从小到大顺序地排列各元素即可得 到一个非递减有序序列。例如,对于序列 6, 5, 6, 9, 6, 4, 8, 6, 5,其元素在整数区间4, 9内取值,因此使

3、数组元素 b0-b5的下标 0-5分别对应数值 4-9,顺序地扫描序列的每一个元素并累计其出现的次数,即将 4的个数记入 b0, 5的个数记入b1,依此类推, 9的个数记入 b5。最后依次判断数组 b的每个元素值,并将相应个数的数值顺序地写入结果序列即可。 对于上例,所得数组 b的各个元素值如下: 那么在输出序列中写入 1个4、 2个 5、 4个 6、 1个 8、 1个 9,即得 4, 5, 5, 6, 6, 6, 6, 8, 9,从而完成排序处理。【 C函数】 void sort(int n, int a) int*b; int i , k|number; int minimum=a0, m

4、aximum=a0; /*minimum和 maximum分别表示数组 a的最小、最大元素值 */ for(i=1; i n; i+) if(1)minimum=ai; else if(2)maximum=ai; number=maximum-minimum+1; if(number =1)return;b=(int*)calloc(number, Sizeof(int); if(!b) return; for(i=0; i n; i+)/*计算数组a的每个元素值出现的次数并记入数组 b*/ k=ai-minimum; +bk; /*按次序在数组 a中写入排好的序列 */ i= (3) ; f

5、or(k=0; k number; k+) for(; (4); -bk) ai+=minimum+ (5) ; 3 阅读以下说明和 C代码,填充代码中的空缺,将解答填入答题纸的对应栏内。 【说明 1】 下面的函数 countCharq(char*text)统计字符串 text中不同的英文字母数和每个英文字母出现的次数 (英文字母不区分大小写 )。 【 C代码 1】 int countChar(char *text ) int i, sum=0; /*sum保存不同的英文字母数 */ char*ptr; int c2 6=0; *数组 C保存每个英文字母出现的次数 * *c0记录字母 A或 a

6、的次数, c1记录字母 B或 b的次数,依此类推 * ptr= (1 ); *ptr初始时指向字符 串的首字符 * while(*ptr) if(isupper(*ptr) c*ptr-A+; else if(islower(*ptr) C*ptr-a+; ( 2); /*指向下一个字符 */ for(i=0; i int fl(int(*f)(int); int f2(int); int f3(int); int main() printf(“ d n“, fl(4); printf(” d n”, fl(5); return 0; int fl(int(*f)(int) int n=0;

7、/*通过函数指针实现函数调用,以返回值作为循环条件 */ while ( (6 ) ) n+; retUrn n; int f2(int n) printf(“f2: “); return n*n-4; int f3(int n) printf(“f3: “); return n-1; 4 阅读以下说明和 C程序,填充程序中的空缺,将解答填入答题纸的对应栏内。 【说明】 正整数 n若是其平方数的尾部,则称 n为同构数。例如, 6是其平方数 36的尾部, 76是其平方数 5776的尾部, 6与 76都是同构数。下面的程序求解不超过10000的所有同构数。 已知一位的同构数有三个: 1, 5, 6

8、,因此二位同构数的个位数字只可能是 1,5, 6这三个数字。依此类推,更高位数同构数的个位数字也只可能是 1, 5, 6这三个数字。 下面程序的处理思路是:对不超过 10000的每一个整数 a,判断其个位数字,若为 1、 5或 6,则将 a转换为字符串 as,然后对 a进行平方运算,并截取其尾部与as长度相等的若干字符形成字符串后与 as比较,根据它们相等与否来断定 a是否为同构数。 【 C程序】 #include #include #include int myitoa(int, char*); *将整数转换为字符串 * *right取得指定字符串尾部长度为 length的子串,返回所得子串

9、的首字符指针 * char*right(char*, int length); int main() int a, t; int len; char as1 0, rs2 0; printf(“1, 10000内的同构数: n“); for(a=1; aisEmergency = false; PoliceCar(b001 b) : Car(), Emergency() this一 isEmergency=b; PoliceCar() bool isEmergent() return (4 ); ) void runRedLight() *代码略 * ; /*类Ambulance、 FireE

10、ngine实现代码略 */ class Traficcontrolsystem *交通控制类 * private: Vehicle*v24; int numVehicles; *在构造函数中设置初始值为 0* public: void control() 控制在紧急情况 下应急车辆红灯通行,其他情况按常规通行 for(int i=0; i(Vi); if(ev!=0) (5 ) -runRedLight(); else (6)-run(); void add(Vehicle*vehicle) vnumVehicles+=vehicle; *添加车辆 * void shutDown()for(i

11、nt i=0; iadd(new Car(); tcs-add(new PoliceCar(); tcs-add(new Ambulance(); tcs-add(new Ambulance(true); tcs-add(new FireEngine(true); tcs-add(new FireEngine(); tcs-add(new Truck(); tcs-control(); tcs-shutDown(); delete tcs; 6 阅读以下说明和 Java代码,填充程序中的空缺,将解答填入答题纸的对应栏内。 【说明】 某应急交通控制系统 (TraficControlSystem)

12、在红灯时控制各类车辆 (Vehicle)的通 行,其类图如图 6 1所示,在紧急状态下应急车辆在红灯时可通行,其余车辆按正常规则通行。下面的 Java代码实现以上设计,请完善其中的空缺。 Java代码 abstract clasS Vehicle public Vehicle() abstract void run(); , interface Emergency (1) ; (2) ; ; ClasS Car extends VehiCle public Car() void run() *代码略 * , Class Truck extends Vehicle publiC Truck()

13、void run() *代码略 * ; clasS PoliceCar (3) boolean isEmergency= false; public PoliceCar() public PoliceCar(boolean b) f thiS isEmergency=b; public boolean isEmergent() return ( 4); public void runRedLight() *代码略 * , /*类 Ambulance、 FireEngine实现代码略 */ public class Traficcontrolsystem *交通控制类 * private Veh

14、iclev=new Vehicle2 4; int numVehicleS; public void control() for(int i=0; i numVehicleS;i+) if(viinstanceof Emergency(Emergency)Vi) isEmergent() ( (5 ) ) runRedLight(); else (6) run(); void add(Vehicle vehicle) vnumVehicles+=vehicle; *添加车辆* void shutDown() *代码略 * public static void main(Stringargs)

15、TraficControlSystem tcs = new TraficControlSystem(); tcs add(new Car(); tcs add(new PoliceCar(); tcs add(new Ambulance(); tcs add(new Ambulance(true); tcs add(new FireEngine(true); tcs add(new Truck(); tcs add(new FireEngine(); tcs control(); tcs shutDown(); 2013年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷答案与解析

16、1 【正确答案】 (1)s (2)t (3)Cs (4)Dt (5)s t 【试题解析】 首先我们来理解两个有限集合的相似度的含义。两个包含有限个元素的非空集合 A、 B的相似度定义为它们的交集大小 (元素个数 )与并集大小之比。如果两集合完全相等,则相似度必然为 1(100 );如果两集合完全不同 (没有公共元素 ),则相似度必然为 0;如果集合 A中有一半元素就是集合 B的全部元素,而另一半元素不属于集合 B,则这两个集合的相似度为 0 5(50 )。因此,这个定义符合人们的常理性认识。 在大数据应用中,经常要将很多有限集进行分类。例如, 每天都有大量的新闻稿。为了方便用户检索,需要将新闻

17、稿分类。用什么标准来分类呢 ?每一篇新闻稿可以用其中所有的关键词来表征。这些关键词的集合称为这篇新闻稿的特征向量。两篇新闻稿是否属于同一类,依赖于它们的关键词集合是否具有较高的相似度 (公共关键词个数除以总关键词个数 )。搜索引擎可以将相似度超过一定水平的新闻稿作为同一类。从而,可以将每天的新闻稿进行分类,就可以按用户的需要将某些类的新闻稿推送给相关的用户。 本题中的集合用整数组表示,因此,需要规定同一数组中的元素各不相同 (集合中的元素是各不相同的 )。题中 ,整数组 A1: m和 B1: n分别存储了集合 A和B的元素。流程图的目标是将 A、 B中相同的元素存放入数组 C1: s(共 s个

18、元素 ),并将 A、 B中的所有元素 (相同元素只取一次 )存放入数组 D1: t(共 t个元素 ),最后再计算集合 A和 B相似度 s t。 流程图中的第一步显然是将数组 A中的全部元素放入数组 D中。随后,只需要对数组 B中的每个元素进行判断,凡与数组 A中某个元素相同时,就将其存入数组 C;否则就续存入数组 D(注意,数组 D中已有 m个元素 )。这需要对 j(遍历数组 B)与 i(遍历数组 A)进行两重循环。判断 框 BD=Ai成立时, BD应存入数组c;否则应继续 i循环,直到循环结束仍没有相等情况出现时,就应将 B啪存入数组 D。存入数组 C之前,需要将其下标 s增 1;存入数组

19、D之前,需要将其下标 t增 1。因此,初始时,应当给 j赋 0,使数组 C的存数从 C1开始。从而, (1)处应填 s, (3)处应填 Cs。而数组 D是在已有 m个元素后续存,所以,初始时,数组D的下标 t应当是 m,续存是从 Dm+1开始的。因此, (2)处应填 t, (4)处应填Dt。 两重循环结束后,就要计算相似 度 s t,将其赋予 SIM,因此 (5)处应填 s t。 2 【正确答案】 (1)aimaximum,或 ai=maximum,或其等价形式 (3)0 (4)bk,或 bk0,或 bk!=0,或其等价形式 (5)k 【试题解析】 本题考查 C程序的基本语法和运算逻辑。 首先

20、应认真分析题目中的说明,然后确定代码结构和各变量的作用。 空 (1)和 (2)所在 for语句的功能是求出数组 a中的最小元素 minimum和最大元素maximum。在设置了 minimum和 maximum的初始值后,空 (1)处的判断条件是只要目前的元素 ai小于 minimum,就需要更新 minimum,反之,空 (2)处的判断条件是只要目前的元素 ai大于 maximum,就需要更新 maximum,因此空 (1)处应填入 aimaximum或其等价方式。 minimum和 maximum的作用是要确定计数数组 b的大小。 根据题目中的描述,序列中的每个元素 ai都对应到计数数组

21、b的一个元素bk,对应方式为: k=ai一 minimum,其中 minimum是数组 a中的最小元素,显然在计数时,一个数值出现一次,就在对应的 bk中累加一次。 空 (3) (5)所在的语句组是产生排序后的序列,重新写入数组 a。首先需明确变量 i和 k的作用,根据它们在该语句组中的出现位置, i用于表示数组 a的元素下标, k用于表示数组 b中元素的下标,因此,空 (3)处应填入 0,使得从数组 a中下标为 0的数组元素开始。通过循环控制 “for(1k=0; k0”或其等价形式。由于 bk中记录的是元素k+minimum的出现次数,所以空 (5)处应填入 “k”,从而将元素值恢复后再写

22、回去。 3 【正确答案】 (1)text,或 &text0,或其等价形式 (2)ptr+,或 +ptr,或 ptr=tr+1,或 ptr+=1 (3)ci,或 *(c+i) (4)f2 (5)f3 (6)f(n),或 (*f)(n) 【试题解析】 本题考 查数据指针、运算逻辑和函数指针的应用。 首先应认真分析题目中的说明,然后确定代码结构和各变量的作用。 在函数 countChar(char*text中来统计字符串 text中不同的英文字母数和每个英文字母出现的次数。用来表示计数值的数组元素 ci需要与英文字母对应起来,方式为 c0记录字母 A或 a的次数, c1记录字母 B或 b的次数,依此

23、类推,因此i=英文字母 A (英文字母为大写 )或 i=英文字母 -a(英文字母为小写 )。 数据指针是指向数据的指针变量。数据指针 ptr用来表示。 text中的每一个字符,初始时 ptr指向第一个字符,因此空 (1)处应填入 “text“或其等价方式, (2)处的作用是随循环控制逐个指出 text中的后续字符,因此空 (2)处应填入 “ptr+”或其等价方式。 显然,若 ci的值不为 0则表示字符 A+i或 a+i出现了,反之,则表示字符A+i或 a+i未出现,因此在计算字符种类时只要判断 ci是否为 0即可,因此空(3)处应填入 “ci”或其等价形式。 函数指针是指向函数的指针变量。根据

24、代码 2的声明 “int fl(int(*f)(int); ”可知调用函数 f1时,实参应该是函数名或函数指针,且函数名或函数指针指向的函数应有一个整型参数,返回值为整型,而 f2和 f3都是符合这种定义类型的函数。 C代码 2中,在 main函数中两次调用了函数 f1,分析运行结果可知,是先以 f2为实参调用 f1,然后以 f3为实参调用 f1,因此空 (4)和 (5)分别填入 “f2”或 “f3”或它们的等价形式,在空 (6)处应填入 “f(n)”或其等价形式来实现最后对 f2和 f3的调用。 while ( (6 ) ) n+; retUrn n; int f2(int n) print

25、f(“f2: “); return n*n-4; int f3(int n) printf(“f3: “); return n-1; 4 【正确答案】 (1)a 10,或其等价形式 (2)right(rs,len) 【试题解析】 本题考查 C语言语法、数据指针和运算逻辑的应用。 首先应认真分析题目中的说明,然后确定代码结构和各 变量的作用。 根据题目中的叙述,同构数的个位数为 1、 5或 6,因此,对于不超过 10000的每个整数,应先获取其个位数字,因此空 (1)处应填入 “a 10”或其等价形式,从而可以 先过滤掉不可能是同构数的数。 根据代码中的注释,通过以下运算后,得到由 a中数值转换

26、所得的字符串 as,以及 a的平方所得数值转换得到的字符串 11s,此后通过字符串比较运算来判断是否为同构数。 len=myitoa(a, as); *数 a转换为字符串,存入 as* myitoa(a*a, rs); *数 a的平方转换为字符串,存入 rs* 函数 myitoa(mnUITI, char*s)的功能是将整数 num转换为字符串 s,这就需要将整数 hum的每个数字分离出来,通常通过整除取余运算实现,即以下代码所实现的。 while(num) *从个位数开始,取 num的每一位数字转换为字符后放入 s* sn+ = (3) + 0; num=num 10; sn= 0; 其中,

27、空 (3)处应填入 “hum 10”或其等价形式。 函数 right(char*ms, int length)取字符串 ms尾部长度为 length的子串,返回所得子串的首字符指针。该函数的处理思路是先找到 ms中字符串的结尾,然后倒着数出 length个字符,从而得到所需字符串的首字符指针。空 (5)处应填入 “i+,ms-”或其等价形式。 另一个更简便的方式是在得到 ms的结尾指针后,再减去 length即可,即最后返回 ms-length即可。 5 【正确答案】 (1)virtual bool isEmergent() (2)virtual void runRedLight() (3)p

28、ublic Car,public Emergency (4)this-isEmergency (5)ev (6)vi 【试题解析】 本题考查 C+语言程序设计的能力,涉及类、对象、函数的定义和相关操作。要求考生根据给出的案例和执行过程说明,认真阅读理清程序思路,然后完成题目。 根据题目描述,以交通控制系统 (TraficControlSystem)为背景,本题目中涉及的各类车辆和是否应急状态下在红灯时的通行情况。根据说明进行设计,题目给出了类图 (图 5 1类图所示 )。 图中父类 Vehicle代表交通工具,设计为抽象类,包含一个方法: run(),表示行驶某一个具体的交通工具对象,行驶的方

29、法由具体子类型完成,所以 Vehicle的run()为一个纯虚函数: Car和 Truck都继承自 Vehicle的两个子类型,所以它们都继承了 Vehicle的run()方法,各自行驶方式有所不同,所以都覆盖了 Vehicle的 run()方法,并加以实现: void run() *代码略 * Car的两个子类型 PoliceCar和 Ambulance都继承自 Car,从而 PoliceCar和Ambulance也都继承了 Car中的 run()方法。 Truck的子类 FireEngine也继承了Truck中的 run()方法。 图中接口 Emergency在 C+中采用抽象基类的方法实

30、现,其中约定红灯时通行的相关接口函数为: isEmergent0和 nmRedLight0,均为纯虚函数,原型中 =0表示纯虚函数,实现由子类完成: virtual bool isEmergent()=0; virtual void runRedLight() =0; isEmergent0函数接 121约定应急车辆返回自身紧急情况状态,用 bool类型的isEmergency表示: this isEmergency,其值在紧急情况下为 bool值 true,非紧急情况下为 bool值 false。 runRedLight0函数接口约定应急车辆在红灯时如何通行(isEmergency为 tru

31、e,则通行, isEmergency为 false,和普通车辆一样通行 )。Emergency的子类有 PoliceCar、 Ambulance和 FireEngine,所以在这三个类中都要实现 Emergency中定义的纯虚函数接口。 交通控制类 TraficControlSystem对运行的交通工具进行控制,所有交通工具用Vehicle数组 v表示; numVehicles表示交通工具数量; control函数进行控制在紧急情况下应急车辆红灯通行,其他情况按常规通行; add0表示有车辆加入系统,shutDown()在系统关闭时清除每个对象数组元素: delete vi; Vehicle的

32、子类具体类型有 Car、 Truck、 PoliceCar、 Ambulance和 FireEngine,所以 v口数组中对象有这些类型的对 象,加入 v时会自动向上转型成为 Vehicle类型,而实现了Emergency接口的应急车辆有 runRedLight()函数,其他 Car和 Truck只有 run()函数。因此,用 for循环对每个 vi,判定是否是 Emergency类型,即是否继承了Emergency,调用时动态绑定每个数组元素的实际类型,需要通过动态类型转换: Emergency*ev=dynamic_cast(vi); 如果转换成功,说明是Emergency的子类,实现了

33、nmRedLight(),可以调用 rtmRedLight(),否则调用run(): if(ev !=0) ev-runRedLight(); else vi-run(); 主控逻辑代码在 main函数中实现。初始化 TraficControlSystem,用 tcs表示,调用 tcs的 add()函数添加具体的交通工具,这里会自动向上转型成为 Vehicle类型,调用 control() 对各车辆进行控制,调用 shutDown()系统关闭,使用完数组对象之后,需要用 delete操 作进行释放对象,即 delete tcs; 因此,空 (1)和空 (2)需要定义纯虚函数 isEmergen

34、t()和 runRedLight(),原型中 =0题目代码中已经给出,所以空 (1)和空 (2)分别为 “virtual bool isEmergent0“和“virtual void nmRedLight()”;空 (3)需要继承 Car和 Emergency,即 “public Car,public Emergency”: 空 (4)要返回应急车辆对象的状态,即 “this-isEmergency”;空 (5)处动态类型转换成功的对 象 ev;空 (6)处为普通车辆对象 vi。 6 【正确答案】 (1)boolean isEmergent() (2)void runRedLight0 (3

35、)extends Car implements Emergency (4)this isEmergency (5)(Emergency)vi (6)vii 【试题解析】 本题考查 Java语言程序设计的能力,涉及类、对象、方法的定义和相关操作。要求考生根据给出的案例和执行过程说明,认真阅读理清程序思路,然后完成题目。 根据题目说明, 以交通控制系统 (TraficControlSystem)为背景,本题目中涉及的各类车辆和是否应急状态下在红灯时的通行情况。根据说明进行设计,题目给出了类图 (图 6 1类图所示 )。 图中父类 Vehicle,代表交通工具,设计为抽象类。在 Java用 abst

36、ract关键字表示,表示行驶某一个具体的交通工具。 Vehicle包含一个抽象方法: run( ),方法后没有实现,直接用;来表示抽象方法,表示行驶的方法由具体子类型完成,所以Vehicle的 run( )为一个抽象方法: abstract void run( ); Car和 Truck都继承自 Vehicle的两个子类型,所以他们都继承了 Vehicle的run0法,各自行驶方式有所不同,所以都覆盖了 Vehicle的 ruIl( )方法,并加以实现: void run( ) *代码略 * Car的两个子类型 PoliceCar和 Ambulance都继承自 Car,从而 PoliceCar

37、和Ambulance 也都继承了 Car中的 run()方法。 Truck的子类 FireEngine也继承了 Truck的run( )方法。 图 6-1中 Emergency在 Java中采用接口实现,其中约定红灯时通行的相关接口为: isEmergent0和 runRedLight0。 isEmergent( )接口约定应急车辆返回自身紧急情况状态,用 bool类型的isEmergency表示: this isEmergency,其值在紧急情况下为 true,非紧急情况下为 false。 runRedLight0接口约定应急车辆在红灯时如何通行 (isEmergency为true,则通行,

38、 isEmergency为 false,和普通车辆一样通行 )。实现 Emergency的类有 PoliceCar、 Ambulance和 FireEngine,所以在这三个类中都要实现Emergency中定义的接口。在 Java中,实现接口用 implements关键字,后面加上所要实现的接 El,即: Clas sName implements InterfaceName 交通控制类 TraficControlSystem对运行的交通工具进行控制,所有交通工具用Vehicle数组 v表示; numVehicles表示交通工具数量; control函数进行控制在紧急情况下应急车辆红灯通行,其

39、他情况按常规通 行; add()表示有车辆加入系统,shutDown()表示系统关闭。 Vehicle的子类具体类型有 Car、 Truck、 PoliceCar、Ambulance和 FireEngine,所以 v 数组中对象有这些类型的对象,加入 v时会自动向上转型成为 Vehicle类型, Emergency接口的应急车辆有 runRedLight( )方法,其他 Car和 Truck只有 run( )方法。因此,用 for循环中对每个 vi,判定是否是 Emergency类型的实例,即是否实现了 Emergency。 Java中判断一个对 象是否是某个类型的实例用 instanceof

40、关键字。即: vi instanceof Emergency,如果是,说明是应急车辆,接着判定应急车辆的状态,在判定之前先要将应急车辆进行向下转型, Java中向下转型直接在对象前加上用括号括起来的转换的目标类型即可,即: (Emergency)vi) isEmergent(),如果判定为真,执行runRedLight( ),判定不成功,则调用 run( ),调用时动态绑定每个数组元素的实际类型,需要通过动态类型转换并调用 runRedLight0: if(Viinstanceof Emergency (Emergency)Vi) isEmergent( ) (Emergency)Vi) ru

41、nRedLight( ); el se vi-run()j 主控逻辑代码在 main方法中实现。初始化 TraficControlSystem,用 tcs表示,调用 tcs的 add()函数添加具体的交通工具,这里会自动向上转型成为 Vehicle类型,调用 control( ) 对各车辆进行控制,调用 shutDown( )系统关闭。 因此,空 (1)和空 (2)需要定义接口 isEmergent0和 nmRedLight0,题目代码中已经给出用分号结尾,所以空 (1)和空 (2)分别为 “bool isEmergent( )“和 “void runRedLight( )”;空 (3)需要继承父类 Car和实现接口 Emergency, Java中继承采用 extends关键字,即应填入 “extends Car implements Emergency”;空 (4)要返回应急车辆对象的状态,即填入 “this isEmergency”;空 (5)处为动态类型转换后的对象 (Emergency)vi;空 (6)处为普通车辆对象 vi。

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