




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中级软件设计师2007下半年下午试题试题一 阅读以下说明和图,回答问题1至问题4,将解答填入对应栏内。 【说明】 某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下; 1每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的千时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。 2学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。 3在记录学生成绩之前,系统需要验证这些成绩是否有效。首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的:如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩足有效的,否则无效。 4对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,系统不会处理这些成绩。 5若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。 6在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。主讲教师须将核对之后的成绩报告返还系统。 7根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。 现采用结构化方法对这个系统进行分析与设计,得到如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。1、 【问题1】 使用说明中的词语,给山图l-1中的外部实体E1E4的名称。2、 【问题2】 使用说明中的词语,给出图1-2中的数据存储D1D5的名称。 3、 【问题3】 数据流图1-2缺少了三条数据流,根据说明及数据流图1-1提供的信息,分别指出这三条数据流的起点和终点。起点终点4、【问题4】 数据流图是在系统分析与总体设计阶段宏观地描述系统功能需求的重要图形化工具,程序流程图也是软件开发过程中比较常用的图形化工具。简要说明程序流程图的适用场合与作用。试题二 阅读下列说明,回答问题1至问题4,将解答填入对应栏内。 【说明】 某汽车维修站拟开发一套小型汽车维修管理系统,对车辆的维修情况进行管理。 1对于新客户及车辆,汽车维修管理系统首先登记客户信息,包括:客户编号、客户名称、客户性质(个人、单位)、折扣率、联系人、联系电话等信息;还要记录客户的车辆信息,包括:车牌号、车型、颜色等信息。一个客户至少有一台车。客户及车辆信息如表2-1所示。 表2-1 客户及车辆信息客户编号GX0051客户名称XX公司客户性质单位折扣率95%联系人杨浩东联系电话82638779车牌号颜色车型 车辆类别*0765白色帕萨特微型车 2记录维修车辆的故障信息。包括:维修类型(普通、加急)、作业分类(大、中、小修)、结算方式(自付、三包、索赔)等信息。维修厂的员工分为:维修员和业务员。车辆维修首先委托给业务员。业务员对车辆进行检查和故障分析后,与客户磋商,确定故障现象,生成维修委托书。如表2-2所示。 表2-2维修委托书 No20070702003登记日期:2007-07-02 车牌号*0765客户编号GS0051维修类型普通作业分类中修结算方式自付进厂时间2007070211:09业务员张小红业务员编号012预计完工时间故障描述车头损坏,水箱漏水 3维修车间根据维修委托书和车辆的故障现象,在已有的维修项目中选择并确定一个或多个具体维修项目,安排相关的维修工及工时,生成维修派工单。维修派工单如表2-3所示。 表2-3维修派工单 No20070702003 维修项目编号维修项目工时维修员编号维修员工种012维修车头5.00012机修012维修车头2.00023漆工015水箱焊接补漏1.00006焊工017更换车灯1.00012机修 4客户车辆在车间修理完毕后,根据维修项目单价和维修派工单中的工时计算车辆此次维修的总费用,记录在委托书中。 根据需求阶段收集的信息,设计的实体联系图(图2-1)和关系模式(不完整)如下所示。图2-1中业务员和维修工是员工的子实体。【概念结构设计】 【逻辑结构设计】 客户( (5) ,折扣率,联系人,联系电话) 车辆(车牌号,客户编号,车型,颜色,车辆类别) 委托书( (6) ,维修类型,作业分类,结算方式,进厂时间, 预计完工时间,登记日期,故障描述,总费用) 维修项目(维修项目编号,维修项目,单价) 派工单( (7) ,工时) 员工( (8) ,工种,员工类型,级别)5、 【问题1】 根据问题描述,填写图2-1中(1)(4)处联系的类型。联系类型分为一对一、一对多和多对多三种,分别使用1:1,1:n或1:*,m:n或*:*表示。6、 【问题2】 补充图2-1中的联系并指明其联系类型。联系名可为:联系1,联系2,7、 【问题3】 根据图2-1和说明,将逻辑结构设计阶段生成的关系模式中的空(5)(8)补充完整。8、 【问题4】 根据问题描述,写出客户、委托书和派工单这三个关系的主键。试题三 阅读下列说明和图,回答问题1至问题4,将解答填入对应栏内。 【说明】 已知某唱片播放器不仅可以播放唱片,而且可以连接电脑并把电脑中的歌曲刻录到唱片上(同步歌曲)。连接电脑的过程中还可自动完成充电。 关于唱片,还有以下描述信息: 1每首歌曲的描述信息包括:歌曲的名字、谱写这首歌曲的艺术家以及演奏这首歌曲的艺术家。只有两首歌曲的这三部分信息完全相同时,才认为它们是同一首歌曲。艺术家可能是一名歌手或一支由2名或2名以上的歌手所组成的乐队。一名歌手可以不属于任何乐队,也可以属于一个或多个乐队。 2每张唱片由多条音轨构成;一条音轨中只包含一首歌曲或为空,一首歌曲可分布在多条音轨上;同一首歌曲在一张唱片中最多只能出现一次。 3每条音轨都有一个开始位置和持续时间。一张唱片上音轨的次序是非常重要的,因此对于任意一条音轨,播放器需要准确地知道,它的下一条音轨和上条音轨是什么 (如果存在的话)。 根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表3-1所示的类列表、如图3-1所示的初始类图以及如图3-2所示的描述播放器行为的UML状态图。 表3-1 类列表类名说明Artist艺术家Song歌曲Band乐队Musician歌手Track音轨Album唱片9、 【问题1】 根据说明中的描述,使用表3-1给出的类的名称,给出图3-1中的AF所对应的类。10、 【问题2】 根据说明中的描述,给山图3-1中(1)(6)处的多重度。11、 【问题3】 图3-1中缺少了一条关联,请指出这条关联两端所对应的类以及每一端的多重度。类多重度 12、 【问题4】 根据图3-2所示的播放器行为UML状态图,给出从“关闭”状态到“播放”状态所经过的最短事件序列(假设电池一开始就是有电的)。试题四 阅读下列说明和图,回答问题1至问题3,将解答填入对应栏内。 【说明】 某机器上需要处理n个作业job1,job2,jobn,其中: (1)每个作jobi(1in)的编号为i,jobi有一个收益值pi和最后期限值di小 (2)机器在一个时刻只能处理一个作业,而且每个作业需要一个单位时间进行处理,一旦作业开始就不可中断,每个作业的最后期限值为单位时间的正整数倍; (3)job1jobn的收益值呈非递增顺序排列,即p1)P2n): (4)如果作业jobi在其期限之内完成,则获得收益9i;如果在其期限之后完成,则没有收益。 为获得较高的收益,采用贪心策略求解在期限之内完成的作业序列。图4*1是基于贪心策略求解该问题的流程图。 (1)整型数组J有n个存储单元,变量k众表示在期限之内完成的作业J1.k存储所有能够在期限内完成的作业编号,数组J1.k里的作业按其最后期限非递减排序,即dJ1dJk。 (2)为了便于在数组J中加入作业,增加一个虚拟作业Job0,并令d0=0,j0=0。 (3)算法大致思想:先将作业job1的编号1放入J1,然后,依次对每个作业jobi (2in)进行判定,看其能否插入到数组J中。若能,则将其编号插入到数组J的适当位置,并保证J中作业按其最后期限非递减排列;否则不插入。 jobi能插入数组J的充要条件是:jobi和数组J中已有作业均能在其期限之内完成。 (4)流程图中的主要变量院明如下。 i:循环控制变量,表示作业的编号; k:表示在期限内完成的作业数: r:若jobi能插入数组J,则其在数组了中的位置为r+1: q:循环控制变量,用于移动数组J中的元素。13、【问题1】 请填充图4-1中的空缺(1)、(2)和(3)处。14、【问题2】 假设有6个作业job1,job2,job6; 完成作业的收益数组p=(p1,p2,p3,p4,p5,p6)=(90,80,50,30,20,10): 每个作业的处理期限数组d=(d1,d2,d3,d4,d5,d6)=(1,2,1,3,4,3)。 请应用试题中描述的贪心策略算法,给出在期限之内处理的作业编号序列 (4) (按作业处理的顺序给出),得到的总收益为 (5) 。15、【问题3】 对于本题的作业处理问题,用图4-1的贪心算法策略,能否求得最高收益? (6) 。用贪心算法求解任意给定问题时,是否一定能得到最优解? (7) 。 试题五 阅读以下说明和C代码,将应填入 (n) 处的字句写在的对应栏内。16、【说明】 在一个简化的绘图程序中,支持的图形种类有点(point)和圆(circle),在设计过程中采用面向对象思想,认为所有的点和圆都是一种图形(shape),并定义了类型shape t、 point t和circle t分别表示基本图形、点和圆,并且点和圆具有基本图形的所有特征。 【C代码】 typedef enum point,circle shape type; /* 程序中的两种图形:点和圆 */ typedef struct /* 基本的图形类型 */ shape_type type; /* 图形中类标识:点或者圆*/ void (*destroy) (); /* 销毁图形操作的函数指针*/ void (*draw) (); /* 绘制图形操作的函数指针*/ shape_t; typedef struct shape_t common; int x; iht y; point_t; /* 定义点类 型, x, y为点坐标*/ void destroyPoint (point_t* this) free (this); printf (Point destoryed! n); ) /* 销毁点对象*/ void drawPoint(point_t* this) printf(P(%d,%d), this-x, this-y); /* 绘制点对象*/ shape_t* createPoint (va_list* ap) (/* 创建点对象,并设置其属性*/ point_t* p_point; if ( (p_point= (point_t*)malloc (sizeof (point_t) ) =NULL) returnNULL; p_point-common, type = point; p_point-common, destroy = destroyPoint; p_point-common.draw = drawPoint; p_point-x = va_arg(*ap, int); /* 设置点的横坐标*/ p_point-y = va_arg(*ap, int); /* 设置点的纵坐标*/ return (shape_t*)p_ooint; /*返回点对象指针*/typedef struct /*定义圆类型*/ shape_t common;point_t 4center; /*圆心点*/int radius; /*圆半径*/ circle_t;void destroyCircle(circle_t* this)free( (1) ); free(this); printf(Circle destoryed!n);void drawCircle(circle_t* this) print f (C (); (2) .draw(this-center); /*绘制圆心*/ printf(,%d) , this-radius);shape_t* createCircle(va_list4 ap) /*创建一个圆,并设置其属性*/ circle_t4 p circle; if (p_circle = (circle_t4)malloc (sizeof (circle_t) ) =NULL ) return NULL; p_circle-common.type = circle; p_circle-common.destroy = destroy Circle; p_circle-common.draw = drawCircle; (3) = createPoint(ap); /* 设置圆心*/ p_circle-radius = va_arg(*ap, int); /* 设置圆半径*/ return p_circle;shape_t* createShape(shape_type st, ) /* 创建某一种具体的图形*/ va_list ap; /*可变参数列表*/ shape_t4 p_shape = NULL; (4) (ap, st); if( st = point ) p shape = createPoint(&ap); /* 创建点对象*/ if( st = circle ) p shape = createCircle(&ap); /*创建圆对象*/ va_end (ap); return p_shape;int main( ) int i; /* 循环控制变量,用于循环计数*/ shape_t* shapes2; /* 图形指针数组,存储图形的地址*/ shapes0 = createShape( point, 2, 3); /* 横坐标为2,比值坐标为3*/ shapesii = createShape( circle, 20, 40, 10); /* 圆心坐标(20,40), 半径为 10*/ for(i=0 i2; i+) shapesi-draw(shapesi); printf(n); /* 纵制数组中图形*/ for( i = 1; i = 0; i- ) shapesi-destroy(shapesi); /* 销毁 数组中图形*/ return 0;【运行结果】P(2,3) (5) Circle destoryed !Point destoryed !试题六 阅读下列说明和C+代码,将应填入 (n) 处的字句写在对应栏内。17、 【说明】 已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。 采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图6-1所示。 【C+代码】#include string#include iostreamusing namespace std;class PurchaseRequest public: double Amount; /*一个采购的金额*/ int Number; /*采购单编号*/ string Purpose; /*采购目的*/;class Approver /*审批者类*/public: Approver() successor = NULL; virtual void ProcessRequest(PurchaseRequest aRequest) if (successor != NULL) successor- (1) ; void SetSuccessor(Approver *aSuccesssor) successor = aSuccesssor; private: (2) successor; ;class Congress : public Approver public: void ProcessRequest(PurchaseRequest aRequest) if(aRequest.Amount = 500000) /*决定是否审批的代码少略*/ else (3) ProcessRequest(aRequest); class Director : public Approver public: void ProcessRequest(PurchaseRequest aRequest) /*此处代码省略*/ ; class President : public Approver public: void ProcessRequest(PurchaseRequest aRequest) /*此处代码省略*/ ; class VicePresident : public Approver public: void ProcessRequest(PurchaseRequest aRequest) /*此处代码省略*/ ; void main() Congress Meeting; VicePresident Sam; Director Larry ; President Tammy; Meeting. SetSuccessor(NULL); Sam. SetSuccessor( (4) ); Tammy. SetSuccessor( (5) ); Larry. SetSuccessor( (6) ); PurchaseRequest aRequest; /*构造一采购审批请求*/ cin aRequest.Amount; /*输入采购请求的金额*/ (7) .ProcessRequest(aRequest); /*开始审批*/ return ; 试题七 阅读下列说明和Java代码,将应填入 (n) 处的字句写在对应栏内。18、 【说明】 已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。 采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图7-1所示。 【Java 代码】class PurchaseRequest public double Amount; / 一个采购的金额public int Number; / 采购单编号public String Purpose; / 采购目的 ;class Approver / 审批者类public Approver() successor = null; public void ProcessRequest(PurchaseRequest aRequest) if (successor != null) successor. (1) ; public void SetSuccesser(Approver aSuccesssor) successor = aSuccesssor; private (2) successor;class Congress extends Approver public void ProcessRequest(PurchaseRequest aRequest) if(aRequest,Amount = 500000) / 决定是否审批的代码省略 else (3) .ProcessRequest(aRequest); ;class Director extends Approver public void ProcessRequest(PurchaseRequest aRequest) / 此处代码省略 ;class President extends Approver public void ProcessRequest(PurchaseRequest aRequest) / 此处代码省略 ;class VicePresident extends Approver public void ProcessRequest(PurchaseRequest aRequest) / 此处代码省略 ;public class rs public static void main(String args) throws IOException Congress Meeting = new Congress(); VicePresident Sam = new VicePresident(); Director Larry = new Director(); President Tammy = new President(); / 构造责任链 Meeting. SetSuccessor(null); Sam. SetSuccessor( (4) ); Tammy. SetSuccessor( (5) ); Larry. SetSuccessor( (6) ); /构造一采购审批请求 PurchaseRequest aRequest = new PurchaseRequest(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in); aRequest.Amount = Double.parseDouble(br.readLine(); (7) .ProcessRequest(aRequest); / 开始审批 return ; 答案:试题一1、E1:考试委员会;E2:主讲教师;E3:学生或选课学生:E4:教务处 2、D1:学生信息文件;D2:课程单元信息文件:D3:课程信息文件;D4:课程成绩文件; D5:无效成绩文件。 注:D2和D3的答案可以互换。 3、起点终点D4或课程成绩文件4或生成成绩列表D1或学生信息文件5或生成最终成绩单4或生成成绩列表5或生成最终成绩单 注:数据流起点、终点全部答对才可给分,数据流不分先后顺序。 4、程序流程图通常在进行详细设计时使用,用来描述程序的逻辑结构。解析 本题考查的是DFD的应用,属于比较传统的题目,考查点也与往年类似。 问题1考查的是顶层DFD。顶层DFD通常用来确定系统边界,其中只包含一个唯一的加工(即待开发的系统)、外部实体及外部实体与系统之间的输入输出数据流。题目要求填充的正是外部实体。 从顶层DFD可以看出,数据流是完整的。所以只要根据数据流从题目说明的上下文中,找出E1E4所对应的外部实体,分别为考试委员会、主讲教师、学生和教务处。 0层DFD中缺少的东西比较多,要求填写数据存储及缺失的数据流。先来确定数据存储。首先,从说明中找出可能是数据存储的元素来。很明显,学生信息文件、课程信息文件、课程单元信息文件、课程成绩文件和无效成绩文件应该是数据存储。下面的工作就是对号入座。 从0层DFD上可以看到,加工3到D5有一条数据流;而加工3所完成的操作是“记录无效成绩”。从说明中可知,“对于无效成绩,系统会单独将其保存在无效成绩文件中”,所以D5应该是数据存储“无效成绩文件”。类似地,从加工2“记录有效成绩”到D4有一条数据流,这说明D4就是数据存储“课程成绩文件”。 D1输出两条数据流,分别流向加工1“验证学生信息”和加工4“生成成绩列表”。由说明“根据学生信息文件来确认该学生是否选修这门课程”可知,验证学生信息时,需要根据学生信息文件来进行;而生成成绩列表及成绩单时,学生信息都是必要的。所以D1应该是“学生信息文件”。 这样的话,D2和D3就应该分别与“课程单元信息文件”和“课程信息文件”对应。由于D2和D3都只与加工1有关,所以它们的对应关系就是随意的了。这样5个数据存储就填充完整了。下面要补充缺失的数据流。 首先,从说明的第5条可知,生成成绩列表时,是需要从课程成绩文件中获取信息的,“课程成绩文件”实际上就是图中的D4。而D4和加工4之间并没有数据流,因此这就是一条缺失的数据流。 另外,前面在确定D1所对应的数据存储时提到过,生成成绩单时是需要学生信息的。所以,加工5应该从D1中获取相应的信息,这样就找到了第二条数据流。 第三条数据流也比较容易找。说明的第7条告诉我们,只有“对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生”。也就是说,从成绩列表到成绩单的生成是有条件的。这意味着,在加工4和加工5之间应该存在一条数据流,这就是第3条数据流。 问题4实际上是为了考查大家对DFD的进一步理解,明确DFD在软件开发中用于描述功能需求。试题二5、*(或n或m) (2)1 (3)*(或n或m) (4)*(或n或m) 6、 7、客户编号,客户名称,客户性质 (6)委托书编号,客户编号,车牌号,业务员编号 或:委托书编号,车牌号,业务员编号 (7)委托书编号,维修工编号,维修项目编号 (8)员工编号,员工姓名 8、客户:客户编号 委托:委委托书编号 派工单:委托书编号,维修项目编号,维修工编号解析 本题考查数据库设计,属于比较传统的题目,考查点也与往年类似。 问题1、问题2考查的是数据库的概念结构设计,题目要求补充完整实体联系图中的联系和联系的类型。 根据题目的需求描述和表2-1中的数据可知,一个客户至少拥有一台车,每台车辆有一个对应的客户。所以,客户实体和车辆实体之间存在“拥有”联系,联系的类型为一对多(1:*)。 根据题目的需求描述和表2-2中的数据可知,一份委托书由一个业务员负责接受委托,一个业务员可以负责多份委托书。所以,业务员实体和委托书实体之间存在“委托”联系,联系的类型为一对多(1:*)。 根据题目的需求描述和表2-3中的数据可知,一份委托书可以对应多个维修项目和维修员工,一个维修项目可能涉及多个维修工,一个维修工可以参与多个维修项目。因此,维修派工单的信息涉及三个实体,是由三个实体相互联系而形成的。所以,委托书实体和维修工实体之间存在“派工”联系,联系的类型为一对多(1:*),维修项目实体和维修工实体之间存在联系“派工”,联系的类型为多对多(*:*)。 问题3考查的是数据库的逻辑结构设计,题目要求补充完整各关系模式,并给出各关系模式的主键。 根据实体联系图和表2-1中的数据,对于“客户”关系模式需补充属性:客户编号,客户名称和客户性质。 根据实体联系图和表2-1中的数据,对于“车辆”关系模式,由于车辆实体与客户实体有联系,需记录对应的客户信息,并且车辆有自己的属性车牌号,因此,“车辆”关系模式需补充属性:车牌号,客户编号。 根据实体联系图和表2-2中的数据,对于“委托书”关系模式,由于车辆实体与委托书实体和业务员实体都有联系,需记录对应的车辆和业务员信息,并且委托书有自己的属性委托书编号,因此,“委托书”关系模式需补充属性;委托书编号,车牌号和业务员编号。 根据实体联系图和表2-3中的数据,“派工单”关系模式记录的是委托书、维修项目和维修工三个实体之间的联系,因此,“派工单”关系模式需补充属性:委托书编号,维修项目编号和维修员编号。 根据实体联系图和表2-1中的数据,对于“员工”关系模式需补充属性:员工编号,员工姓名。 问题4指定给定关系模式的主键,显然,管理客户数据时,应为每位客户设置唯一的编码,因此客户关系模式的主键为“客户编号”。类似的,委托书关系模式的主键为“委托书编号”。根据E-R图中派工联系与相关实体的关系,派工单关系模式的主键为“委托书编号,维修项目编号和维修员编号”。试题三9、A:Artist B:Song C:Band D:Musician E:Track F:Album 10、0.* (2)2.*: (3)0.1 (4)1.* (5)1.* (6)1 11、类多重度Track或E(1分)0.11分)Track或E(1分)0.1(1分) 12、按任意键,选择歌曲解析 本题考查的是面向对象的分析与设计。前三个问题的考点比较传统,考查的是类图的设计要素。今年增加了一个关于状态图的考点:如何理解给定的状态图。 问题1属于传统的考法,要求考生根据说明将类图填充完整。实际上就是把表3-1中的类和图中的A-E对号入座。针对这道题目的类图而言,完成这个问题是比较简单的,因为类图中出现了三个典型的类/对象关系结构:继承(类A、C、D)、聚集(类B、e)和组装(类E、F)。从说明可以明显地看出,可能具有继承关系的只能是Artist、Band和Musician。这样类A、C、D就确定了,下面来看B。B和A之间两条关联的名字,已经很明确地告诉了我们,能够被Artist编写、演奏的只能是歌曲(Song)。这样B也确定下来了,剩下的E和F就显而易见了。音轨(Track)中包含的是歌曲,而唱片是由音轨构成的。所以E应该是Track,F应该是Album。 第二步是要确定关键类之间的多重度。这在说明中已经有了明确的描述。(1)和(2)处的多重度描述的是类Band和Musician的实例之间的关系。由“艺术家可能是名歌手或一支由2名或2名以上的歌手所组成的乐队”可知,组成乐队的最少人数应该是2,所以(2)应该是2.*。由“一名歌手可以不属于任何乐队,也可以属于一个或多个乐队”可知,(1)应该是0.*。 (3)(4)处的多重度描述的是类Song和Track的实例之间的关系。由“一条音轨中只包含一首歌曲或为空”可知,(3)应该为0.1。由“一首歌曲可分布在多条音轨上”可知,(4)应该为1.*。同理可以得到,(5)应该是1.*(一张唱片上有多条音轨); (6)应该为1。 问题3考查的是类对象关联中的一种特殊关联:递归关联,它描述的是同一个类的不同实例之间的关系。而类Track的不同实例之间恰好具有这种关系(因此对于任意一条音轨,播放器需要准确地知道,它的下一条音轨和上一条音轨是什么)。所以缺少的那条联系的两端都是类Track,其多重度都为0.1。下限为0,是对应不存在上一条或下一条音轨的情况。 状态图是描述系统动态行为的一种模型。这里状态图的考查仅限于能够理解它所描述的行为。状态图由状态及状态之间的迁移构成,迁移可以由相关的事件触发。问题4给定了两个状态“关闭”和“播放”,要求找出从“关闭”到“播放”的最短事件序列。这就要求我们能够在状态图上找到连接这两个状态的最短迁移,然后将迁移上的事件记录下来就可以了。 从“关闭”状态到“播放”状态可以选择经过迁移“连接电脑”、到达“联机”状态,再经过迁移“断开连接”到达状态“打开”,再从“打开”状态的初始状态“歌曲待选”,经过迁移“选择歌曲”到达“播放状态”。这样经过的事件序列为;连接电脑电量饱和/完成复制断开连接选择歌曲。显然这样的事件序列远比从“关闭”经过“按任意键”直接到达“打开”状态要长得多。所以从“关闭”到“播放”的最短事件序列是:按任意键,选择歌曲。试题四13、 idi (3)Jr+1=i,或Jq+1=i 14、1,2,4,5 或job1、job2、job4、job5及其等价描述形式 (5)220 15、能,或可以、行及其他含义相同的词语 (7)不能,或不可以、不行及其他含义相同的词语解析 本题考查的是算法的设计和分析技术。 问题1考查的是贪心算法的流程图。第(1)空表示第2个作业到第n个作业的主循环,i是循环控制变量,故第(1)空填入ir,表示还可能在J1与Jr之间插入作业i;Jdr=r,表示不可能在J1Jr之间插入作业i。Jdr 问题2是本题算法的一个实例。6个作业的收益已经按降序排好序。根据流程图,将作业1,2,4和5放入数组J中,并得到总收益为220,具体过程如表4-1所示。 表4-1 算法执行过程J数组收益考虑的作业期限操作0job11放入J中190job22放入J中1,2170job31不放入J中1,2170job43放入J中1,2,4200job54放入J中1,2,4,5220job63不放入J中1,2,4,5220 问题3考查算法策略。对于该题,贪心策略可以求得最优解。但不是所有的问题都能通过贪心策略来求得最优解,一个典型的例子是0-1背包问题。举例如下,有三件物品,背包可容纳50磅重的东西,每件物品的详细信息如表4-2所示,问如何装包使得其价值最大? 表4-2 物品信息 物品编号重量价值单位价值11060622010053301204 如果按贪心策略求解该问题,优先选择单位价值最大的物品,则先选择物品1,然后选择物品2。由于此时背包容量还剩下50-10-20=20,不足以容纳物品3,故总价值为 60+100=160美元。但若选择物品2和物品3,容量总和为20+30,小于等于总容量50,得到总价值为100+120=220,会得到更优解。此时用贪心策略不能得到最优解。试题五16、this-center (2)this-center-common (3)p_circle-center (4)va start (5)C(P(20,40),10)本题考查C语言中指针机制、可变数目参数机制及结构体存储映像。本题中涉及的三个数据结构shape_t、circle_t和point_t的关系如下图所示。 通过阅读给出的程序代码可以看出,point_t和circle_t两种结构通过其成员sh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年河北邯郸市口腔医院秋季博硕人才引进12人备考考试题库附答案解析
- 2025贵州省康复医院合同制人员招聘备考考试题库附答案解析
- 2025甘肃天水市事业单位招聘工作人员270人备考练习题库及答案解析
- 2025贵州江口县第六幼儿园招聘备考考试题库附答案解析
- 2025马关县小坝子镇公开储备一批村“两委”后备干部(16人)笔试备考题库及答案解析
- 2025福建漳州市芗江人力资源服务有限公司招聘若干人备考考试题库附答案解析
- 2025年金华市中医医院招聘编外工作人员5人(第二批)备考考试题库附答案解析
- 工厂安全培训标准周期课件
- 2025江西宜春市直事业单位选调22人备考考试题库附答案解析
- 掌握互动教学法
- 认识大脑课件
- 急性胃十二指肠穿孔课件
- 多传感器融合赋能无人驾驶列车的安全感知-洞察及研究
- 2025时事政治必考试题库及答案及完整答案详解
- 药事管理知识与技能培训课件
- 2025人教版(2024)一年级上册数学教学计划 (三篇)
- 汉字的六种结构方式
- 手术部(室)医院感染控制标准WST855-2025解读课件
- 酒店法律培训课件
- 公证一般程序课件
- 2025年食品安全员考试题库(含答案)
评论
0/150
提交评论