欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】中级软件设计师下午试题-58及答案解析.doc

    • 资源ID:1323177       资源大小:89.50KB        全文页数:10页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】中级软件设计师下午试题-58及答案解析.doc

    1、中级软件设计师下午试题-58 及答案解析(总分:90.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)阅读下列说明和图,回答问题 1 至问题 3。【说明】某汽车数字仪表板将完成下述功能:(1)通过模/数转换,实现传感器和微处理器的接口。(2)在发光二极管面板上显示数据。(3)指示速度(mph)、行驶里程、油耗(mpg)等。(4)指示加速或减速。以下是经分析得到的数据流图,有些地方有待填充,假定顶层数据流图是正确的。图 9-14 是顶层数据流图,图 9-15 是第 0 层数据流图,图 9-16 是第 1 层数据流图,其中 A 是加工 1 的细化图,B 是加工 2 的细

    2、化图。图中,sps 表示转速 sps 的瞬时变化值,若sps0 则汽车加速,sps0 则减速,sps=0 则匀速。假定题中提供的顶层图是正确的,请回答下列问题。(分数:15.00)(1).【问题 1】第 0 层数据流图(如图 9-15 所示)中有一条缺失的数据流,请指出该数据流的起点和终点。加工 1 的细化图(如图 9-16 中的 A 所示)中有一条缺失的数据流,请指出该数据流的起点和终点。(分数:5.00)_(2).【问题 2】加工 2 的细化图(如图 9-16 中的 B 所示)中有一条错误的数据流,请指出该数据流的起点或终点(若可以,指出两者)。(分数:5.00)_(3).【问题 3】小说

    3、明是用来描述加工的。小说明的描述方法有哪些?请分别用这些描述方法描述加工 1.2。(分数:5.00)_二、B试题二/B(总题数:1,分数:15.00)阅读下列说明和图,回答问题 1 至问题 3。【说明】图书管理系统详细记录图书库存情况、读者信息及读者借阅记录(包括借书日期和还书日期)。新书入库时要为该书编制图书卡片,包括分类目录号、图书流水号(要保证每本书都有唯一的流水号,即使同类图书也是如此)、书名、作者、内容摘要、价格和购书日期。同一个书名由于版次、作者等不同有可能存在多“种”图书,其间用“分类目录号”区分。系统为每一位合法读者编制一个唯一的借书证号,读者需要提供姓名、单位。一个读者最多可

    4、以同时借阅 5 本图书。借阅图书时,新添借阅记录,并将对应的“归还标记”字段置为“false”,表示“尚未归还”;归还图书时,将相应的“归还标记”字段置为“true”,表示“已经归还”。一本书可能供多位读者借阅,同一本书读者可以重复借阅。如图 9-17 所示为该系统的 E-R 图。(分数:15.00)(1).【问题 1】实体间的联系有“一对一”、“一对多”和“多对多”,指出“借阅”联系属于哪一种?“借阅”关系模式的外键是什么?有主键吗?为什么?(分数:5.00)_(2).【问题 2】由于同一个分类目录号(同一种图书)有多个副本,若用表 Book(图书流水号,分类目录号,书名,作者,内容摘要,价

    5、格,购书日期)存储图书信息则有很多的冗余信息,该如何分解使之满足 BCNF,并指出分解后的关系模式的主键。(分数:5.00)_(3).【问题 3】若用表 Reader 存储读者信息,Book 表存储图书信息,Borrow 表存储借阅情况。以下 SQL 语句是“查询证号为 12345 的读者当前所借阅的图书书名(即尚未归还的图书)”,请补充完整。SELECT 书名 FROM Book WHERE 流水号U (1) /U(SELECT 流水号 FROMU (2) /U WHERE 证号=“12345“ ANDU (3) /U)以下 SQL 语句是“查询书名包含软件设计师的图书情况”,请补充完整。S

    6、ELECT * FROM Book WHERE 书名U (4) /U “%软件设计师%“(分数:5.00)_三、B试题三/B(总题数:1,分数:15.00)阅读下列说明和图,回答问题 1 至问题 3。【说明】C 市刚开通了地铁线,为方便乘客,计划开发自动售票系统。该公司在每一个地铁站放置了多台自动售票机,每一台售票机有一唯一编号,售票记录统一汇总主机。自动售票机只发售从该站起始的各种地铁票,因此乘客只需输入目的站,起始站默认为该站,售票机给出从该站到达目的站的单程票。打印地铁票时为其编一个唯一的流水号,并同时打印自动售票机的编号及票价。售票机的状态变化如下:“空闲”时,显示地铁线路图,等待乘客

    7、输入目的站;当乘客输入目的站后,转入“目的站确认/票数输入”状态,同时给出票价,此时若目的站有误,可返回到空闲状态重新输入,否则,输入票数;乘客输入票数后,转入“票数确认/付款”状态,同样此时若票数有误,可返回到上一状态重新输入,否则,投入钱币付款;当付款金额足够时,“出票/找零”(有必要时进行找零);然后转入“空闲”等待输入目的站状态。该系统采用面向对象方法开发,系统中的类及类之间的关系用 UML 类图表示,如图 9-18 所示是该系统类图的一部分,图 9-19 描述了自动售票机的状态转换图。(分数:15.00)(1).【问题 1】根据题意,给出“自动售票机”类的主要属性。(分数:5.00)

    8、_(2).【问题 2】根据题意,给出“地铁票”类的主要属性。(分数:5.00)_(3).【问题 3】根据题中所述术语,指出图 9-19 中状态 1 到状态 4 分别是什么?(分数:5.00)_四、B试题四/B(总题数:1,分数:15.00)1.【说明】 所谓货郎担问题,是指给定一个无向图,并已知各边的权,在这样的图中,要找一个闭合回路,使回路经过图中的每一个点,而且回路各边的权之和最小。 应用贪婪法求解该问题。程序先计算由各点构成的所有边的长度(作为边的权值),按长度大小对各边进行排序后,按贪婪准则从排序后的各边中选择边组成回路的边,贪婪准则使得边的选择按各边长度从小到大选择。 函数中使用的预

    9、定义符号如下:#define M 100 typedef struct/*x 为两端点 p1、p2 之间的距离,p1、p2 所组成边的长度*/ float x; int p1, p2; tdr; typedef struct/*p1、p2 为和端点相联系的两个端点,n 为端点的度*/ int n, P1, p2; tr; typedef struct/*给出两点坐标*/ float x,y; tpd; typedef int tlM; int n=10; 【函数】 float distance(tpd a,tpd b);/*计算端点 a、b 之间的距离*/ void sortArr(tdr a

    10、M, int m); /*将已经计算好的距离关系表按距离大小从小到大排序形成排序表,m 为边的条数*/ int isCircuit(trM, int i, int j); /*判断边(i, j)选入端点关系表 rM后,是否形成回路,若形成回路返回 0*/ void selected(tr rM, int i, int j);/*边(i,j)选入端点关系表 r*/ void course(tr rM, tl 1M);/*从端点关系表 r 中得出回路轨迹表*/ void exchange(tdr aM, int m, int b); /*调整表排序表,b 表示是否可调,即是否有边长度相同的边存在*

    11、/ void travling(tpd pdM, int n, float dist, t1 locusM) /*dist 记录总路程*/ tdr drM;/*距离关系表*/ tr rM;/*端点关系表*/ int i, j, k, h, m;/*h 表示选入端点关系表中的边数*/ int b;/*标识是否有长度相等的边*/ k=0; /*计算距离关系表中各边的长度*/ for(i=1;in;i+) for(j=i+1;j=n;j+) k+; drk.x=U (1) /U; drk.p1=i; drk.p2=j; m=k; sortArr(dr,m);/*按距离大小从小到大排序形成排序表*/

    12、do b=1; dist=0; k=h=0; do k+; i=drk.p1; j=drk.p2; if(ri.n=1) h+; dist+=drk.x; else if(U (4) /U) /*最后一边选入 r 成回路,则该边必须加入且得到解*/ selected(r,i,j); h+; dist+=drk.x; while(k!=n) if(h=n)/*最后一边选入构成回路,完成输出结果*/ course(r,locus); else/*找不到解,调整 dr,交换表中边长相同的边在表中的顺序,并将 b 置 0*/ U (5) /U; while(!b); (分数:15.00)_五、B试题五

    13、/B(总题数:1,分数:15.00)2.【说明】 以下程序实现数据的排序,将 n 个整数分别按照升序和降序进行排序,类 SortInt_1 实现升序排序,类 SortInt_2 实现降序排序。 【Java 代码】 class SortInt_1 int i,i,k,temp; void SortInt(int a1,int a2)/升序排序 for(i=0;ia1-1;i+) k=i; for(j=i+1;ja1;j+) if(U (1) /U) k=j; if(k !=i) temp=a2i;a2i=a2k;a2k=temp; class SortInt_2U (2) /U int i,j,

    14、k,temp; void SortInt(int a1, int a2)/降序排序 for(i=0; ia1-1;i+) k=i; for(j=i+1;ja1;j+) if(U (3) /U)k=j; if(k !=i) temp=a2i;a2i=a2k;a2k=temp; public class test public static void main(String args) int a=10,55,100,35,87,90,100,16; SortInt_1 NewInt=U (4) /U; NewInt.SortInt(a.lenvh,a);/调用 SortInt_1 类的方法 Sy

    15、stem.out.println(“升序排列的数据: “); for(int i=0;ia.length;i+) System.out.print(ai+“ “); System.out.println(); NewInt=new SortInt_2();/创建类 SortInt_2 的对象 U (5) /U;/调用相应方法进行降序排序 System.out.println(“降序排列的数据: “); for(int i=0;ia.length;i+) System.out.print(ai+“ “); (分数:15.00)_六、B试题六/B(总题数:1,分数:15.00)3.【说明】 本程序

    16、将两个从小到大的有序链表合成一个新的从小到大的有序链表。链表的每一项由类 Node 描述,而链表由 List 描述,类 List 的成员函数有以下几个: creatList(): 创建从小到大的有序链表。 multiplyList(List L1, Llst L2): 将链表 L1 和链表 L2 合并。 print(): 打印链表。 【C+代码】 #include iostream using namespace std; class List; class Node friend class List; public: Node(int data) U (1) /U; private: in

    17、t data; Node *next; ; class List public: List()list=NULL; void multiplyList(List L1, List L2); void creatList(); void print(); private: Node *list; ; void List:creatList() Node *p, *u, *pre; int dara; list=NULL; wbile(1) cout“输入链表的一项: (小于零,结束链表) “endl; cindata; if(dara0)break;/小于零,结束输入 p=list; while

    18、(p !=NULL p=p-next; u=U (2) /U; if(p=list)list=u; else pre-next=u; U (3) /U; void List:multiplyList(List L1, List L2) Node *pL1, *pL2, *pL, *u; list = NULL; pL1 = L1.list; pL2 = L2.11st; while(pL1 != NULL pL1 = pL1-next; else u = new Node(pL2-data); pL2 = pL2-next; if(list = NULL) list =U (4) /U; el

    19、se pL-next=u; pL=u; pL1 = (pL1 != NULL)? pL1:pL2; while(pL1 != NULL) u=U (5) /U; pL1 = pL1-next; if(list = NULL) list=pL=u; else pL-next=u; pL=u; void List:print() Node *p; p = list; while(p !=NULL) coutp-data“/t“; p=p-next; coutend1; void main() List L1, L2, L; cout“创建第一个链表/n“;L1.creatList(); cout“

    20、创建第二个链表/n“;L2.creatList(); L1.print();L2.print(); L.multiplyList(L1,L2); L.print(); (分数:15.00)_中级软件设计师下午试题-58 答案解析(总分:90.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)阅读下列说明和图,回答问题 1 至问题 3。【说明】某汽车数字仪表板将完成下述功能:(1)通过模/数转换,实现传感器和微处理器的接口。(2)在发光二极管面板上显示数据。(3)指示速度(mph)、行驶里程、油耗(mpg)等。(4)指示加速或减速。以下是经分析得到的数据流图,有些地方有

    21、待填充,假定顶层数据流图是正确的。图 9-14 是顶层数据流图,图 9-15 是第 0 层数据流图,图 9-16 是第 1 层数据流图,其中 A 是加工 1 的细化图,B 是加工 2 的细化图。图中,sps 表示转速 sps 的瞬时变化值,若sps0 则汽车加速,sps0 则减速,sps=0 则匀速。假定题中提供的顶层图是正确的,请回答下列问题。(分数:15.00)(1).【问题 1】第 0 层数据流图(如图 9-15 所示)中有一条缺失的数据流,请指出该数据流的起点和终点。加工 1 的细化图(如图 9-16 中的 A 所示)中有一条缺失的数据流,请指出该数据流的起点和终点。(分数:5.00)

    22、_正确答案:()解析:图 9-15 中,缺失的数据流:速度 mph,起点:加工 1 速度处理,终点:仪表板。 图 9-16(A)中,缺失的数据流:加速/减速,起点:加工 1.2 确定加速/减速,终点:仪表板。 分析 分层数据流图时刻牢记父图与子图平衡原则。对这种数据流缺失题目,认真对照父图与子图就可得出答案。另外,还要注意与文件的交互,包括错误数据流大多也是出在此。 将第 0 层数据流图(见图 9-15)与顶层数据流图(见图9-14)仔细对照,可以发现缺失了输出数据流“速度 mph”,其起点为加工 1 速度处理,终点为仪表板。数据流“速度 mph”虽然从加工 1 输出到了加工 2,但这只是内部

    23、数据流。 同理,加工 1 的细化图(见图9-16(A)缺失了数据流“加速碱速”,其起点是加工 1.2 确定加速/减速,终点是仪表板。(2).【问题 2】加工 2 的细化图(如图 9-16 中的 B 所示)中有一条错误的数据流,请指出该数据流的起点或终点(若可以,指出两者)。(分数:5.00)_正确答案:()解析:图 9-16(B)中,错误的数据流:速度 mph,起点:加工 2.2 计算油耗。 分析 仔细对照加工 2(见图 9-15)和加工 2 的细化图(见图 9-16(B),可以发现对于加工 2.2 数据流“速度 mph”作为输出数据,而该数据流应该是输入数据。(3).【问题 3】小说明是用来

    24、描述加工的。小说明的描述方法有哪些?请分别用这些描述方法描述加工 1.2。(分数:5.00)_正确答案:()解析:小说明并不描述具体的加工过程,常用的有自然语言、结构化自然语言、判定表和判定树。 自然语言描述:若sps0 则汽车加速,sps0 则减速,sps=0 则匀速。 结构化自然语言描述:IF sps0 THEN 加速 ELSE IF sps0 THEN 减速 ELSE 匀速 判定表描述: 判定树描述:确定加速/减速二、B试题二/B(总题数:1,分数:15.00)阅读下列说明和图,回答问题 1 至问题 3。【说明】图书管理系统详细记录图书库存情况、读者信息及读者借阅记录(包括借书日期和还书

    25、日期)。新书入库时要为该书编制图书卡片,包括分类目录号、图书流水号(要保证每本书都有唯一的流水号,即使同类图书也是如此)、书名、作者、内容摘要、价格和购书日期。同一个书名由于版次、作者等不同有可能存在多“种”图书,其间用“分类目录号”区分。系统为每一位合法读者编制一个唯一的借书证号,读者需要提供姓名、单位。一个读者最多可以同时借阅 5 本图书。借阅图书时,新添借阅记录,并将对应的“归还标记”字段置为“false”,表示“尚未归还”;归还图书时,将相应的“归还标记”字段置为“true”,表示“已经归还”。一本书可能供多位读者借阅,同一本书读者可以重复借阅。如图 9-17 所示为该系统的 E-R

    26、图。(分数:15.00)(1).【问题 1】实体间的联系有“一对一”、“一对多”和“多对多”,指出“借阅”联系属于哪一种?“借阅”关系模式的外键是什么?有主键吗?为什么?(分数:5.00)_正确答案:()解析:“借阅”联系是“多对多”联系,外键有:借书证号、图书流水号。 “借阅”关系模式不存在主键,因为同一本书读者可以重复借阅,即使加上“借书日期”亦不能唯一标识,读者可以在同一天借阅并归还再借阅,应增加一个属性(如借阅流水号)来标识。 分析 “一个读者最多可以同时借阅 5 本图书一本书可能供多位读者借阅,同一本书读者可以重复借阅”,因此联系“借阅”是多对多联系。 要特别分清“一本图书”与“一种

    27、图书”,一本图书是有流水号标识的,一种图书是由分类目录号标识的。对借阅联系,借阅的是具体的某本书,因此外键有:借书证号、图书流水号。 “借阅”关系模式不存在主键,因为同一本书读者可以重复借阅,即使加上“借书日期”亦不能唯一标识,读者可以在同一天借阅并归还再借阅,应增加一个属性(如借阅流水号)来标识。(2).【问题 2】由于同一个分类目录号(同一种图书)有多个副本,若用表 Book(图书流水号,分类目录号,书名,作者,内容摘要,价格,购书日期)存储图书信息则有很多的冗余信息,该如何分解使之满足 BCNF,并指出分解后的关系模式的主键。(分数:5.00)_正确答案:()解析:图书(分类目录号,书名

    28、,作者,内容摘要,价格,购书日期),主键:分类目录号 副本(图书流水号,分类目录号),主键:图书流水号 分析 由于同一个分类目录号(同一种图书)有多个副本,同一个分类目录号具有相同的很多信息:书名、作者、内容摘要、价格等,同种书中的不同副本由图书流水号区分。故可分解如下: 图书(分类目录号,书名,作者,内容摘要,价格,购书日期),主键:分类目录号 副本(图书流水号,分类目录号),主键:图书流水号(3).【问题 3】若用表 Reader 存储读者信息,Book 表存储图书信息,Borrow 表存储借阅情况。以下 SQL 语句是“查询证号为 12345 的读者当前所借阅的图书书名(即尚未归还的图书

    29、)”,请补充完整。SELECT 书名 FROM Book WHERE 流水号U (1) /U(SELECT 流水号 FROMU (2) /U WHERE 证号=“12345“ ANDU (3) /U)以下 SQL 语句是“查询书名包含软件设计师的图书情况”,请补充完整。SELECT * FROM Book WHERE 书名U (4) /U “%软件设计师%“(分数:5.00)_正确答案:()解析:(1)IN (2) Borrow (3) 归还标记=“false“ (4) LIKE 分析 空(1)是引出于查询的,该类连接词有:IN、NOT IN、EXISTS、NOT EXISTS,EXISTS

    30、引出的子查询一般是 SELECT *型,故排除;再据语意分析应填 IN。 子查询的语意是“查询当前所借阅的图书流水号(即尚未归还的图书)”,因此应从 Borrow表中查询,而且归还标记应为 false,故空(2)应填 Borrow,空(3)应填:归还标记=“false“。 对字符串进行的操作通常是使用操作符 LIKE 的模式匹配,正符合题意,故空(4)应填“LIKE”。三、B试题三/B(总题数:1,分数:15.00)阅读下列说明和图,回答问题 1 至问题 3。【说明】C 市刚开通了地铁线,为方便乘客,计划开发自动售票系统。该公司在每一个地铁站放置了多台自动售票机,每一台售票机有一唯一编号,售票

    31、记录统一汇总主机。自动售票机只发售从该站起始的各种地铁票,因此乘客只需输入目的站,起始站默认为该站,售票机给出从该站到达目的站的单程票。打印地铁票时为其编一个唯一的流水号,并同时打印自动售票机的编号及票价。售票机的状态变化如下:“空闲”时,显示地铁线路图,等待乘客输入目的站;当乘客输入目的站后,转入“目的站确认/票数输入”状态,同时给出票价,此时若目的站有误,可返回到空闲状态重新输入,否则,输入票数;乘客输入票数后,转入“票数确认/付款”状态,同样此时若票数有误,可返回到上一状态重新输入,否则,投入钱币付款;当付款金额足够时,“出票/找零”(有必要时进行找零);然后转入“空闲”等待输入目的站状

    32、态。该系统采用面向对象方法开发,系统中的类及类之间的关系用 UML 类图表示,如图 9-18 所示是该系统类图的一部分,图 9-19 描述了自动售票机的状态转换图。(分数:15.00)(1).【问题 1】根据题意,给出“自动售票机”类的主要属性。(分数:5.00)_正确答案:()解析:“自动售票机”类的主要属性有;编号、所在地铁站名。 分析 “每一台售票机有一唯一编号”,因此自动售票机应有属性“编号”。“自动售票机只发售从该站起始的各种地铁票”,亦即自动售票机只发售其所在站为起始站的地铁票,故应有属性“地铁站名”。(2).【问题 2】根据题意,给出“地铁票”类的主要属性。(分数:5.00)_正

    33、确答案:()解析:“地铁票”类的主要属性有:流水号、起始站、目的站、票价。 分析 地铁票应有属性:起始站、目的站、票价、流水号、自动售票机编号。(3).【问题 3】根据题中所述术语,指出图 9-19 中状态 1 到状态 4 分别是什么?(分数:5.00)_正确答案:()解析:状态 1:“目的站确认/票数输入” 状态 2:“票数确认/付款” 状态 3:“出票/找零” 状态4:“空闲” 分析 根据售票机状态变化的描述,易于得出答案。状态 1 应为“目的站确认/票数输入”,状态 2 应为“票数确认/付款”,状态 3 应为“出票/找零”,状态 4 应为“空闲”。四、B试题四/B(总题数:1,分数:15

    34、.00)1.【说明】 所谓货郎担问题,是指给定一个无向图,并已知各边的权,在这样的图中,要找一个闭合回路,使回路经过图中的每一个点,而且回路各边的权之和最小。 应用贪婪法求解该问题。程序先计算由各点构成的所有边的长度(作为边的权值),按长度大小对各边进行排序后,按贪婪准则从排序后的各边中选择边组成回路的边,贪婪准则使得边的选择按各边长度从小到大选择。 函数中使用的预定义符号如下:#define M 100 typedef struct/*x 为两端点 p1、p2 之间的距离,p1、p2 所组成边的长度*/ float x; int p1, p2; tdr; typedef struct/*p1

    35、、p2 为和端点相联系的两个端点,n 为端点的度*/ int n, P1, p2; tr; typedef struct/*给出两点坐标*/ float x,y; tpd; typedef int tlM; int n=10; 【函数】 float distance(tpd a,tpd b);/*计算端点 a、b 之间的距离*/ void sortArr(tdr aM, int m); /*将已经计算好的距离关系表按距离大小从小到大排序形成排序表,m 为边的条数*/ int isCircuit(trM, int i, int j); /*判断边(i, j)选入端点关系表 rM后,是否形成回路,

    36、若形成回路返回 0*/ void selected(tr rM, int i, int j);/*边(i,j)选入端点关系表 r*/ void course(tr rM, tl 1M);/*从端点关系表 r 中得出回路轨迹表*/ void exchange(tdr aM, int m, int b); /*调整表排序表,b 表示是否可调,即是否有边长度相同的边存在*/ void travling(tpd pdM, int n, float dist, t1 locusM) /*dist 记录总路程*/ tdr drM;/*距离关系表*/ tr rM;/*端点关系表*/ int i, j, k,

    37、 h, m;/*h 表示选入端点关系表中的边数*/ int b;/*标识是否有长度相等的边*/ k=0; /*计算距离关系表中各边的长度*/ for(i=1;in;i+) for(j=i+1;j=n;j+) k+; drk.x=U (1) /U; drk.p1=i; drk.p2=j; m=k; sortArr(dr,m);/*按距离大小从小到大排序形成排序表*/ do b=1; dist=0; k=h=0; do k+; i=drk.p1; j=drk.p2; if(ri.n=1) h+; dist+=drk.x; else if(U (4) /U) /*最后一边选入 r 成回路,则该边必须

    38、加入且得到解*/ selected(r,i,j); h+; dist+=drk.x; while(k!=n) if(h=n)/*最后一边选入构成回路,完成输出结果*/ course(r,locus); else/*找不到解,调整 dr,交换表中边长相同的边在表中的顺序,并将 b 置 0*/ U (5) /U; while(!b); (分数:15.00)_正确答案:()解析:(1) distance(pdi,pdj) (2) !isCircuit(r,i,j) (3) selected(r,i,j) (4) h=n-1 (5) exchange(dr,m,b) 分析 本题主要是函数调用的问题。

    39、空(1)是计算各边的长度,根据函数的声明及说明,应填 distance(pdi,pdj)。 由注释可见空(2)是判断边(i,j)加入 r 后是否形成回路,若形成了回路,不加入。由语句“dist+=drk.x;”可知此处是将边加入,故此处应该是不形成回路条件。参照isCircuit 函数声明及说明可知,若形成回路返回 0,故空(2)填“!isCircuit(r,i,j)”。 空(3)是将边(i,j)加入到 r 中,参照 selected 函数声明及说明,可得空(3)填 selected(r, i,j)。 由注释可见空(4)是最后一条边条件,变量 h 表示的是“选入端点关系表中的边数”,而 n 各

    40、节点回路应该包含 n 条边,这点也可从后面 h=n 输出解看出,故空(4)填 h=n-1。 空(5)是进行调整,调用 exchange 函数,正确调用形式为 exchange(dr,m,b)。五、B试题五/B(总题数:1,分数:15.00)2.【说明】 以下程序实现数据的排序,将 n 个整数分别按照升序和降序进行排序,类 SortInt_1 实现升序排序,类 SortInt_2 实现降序排序。 【Java 代码】 class SortInt_1 int i,i,k,temp; void SortInt(int a1,int a2)/升序排序 for(i=0;ia1-1;i+) k=i; for(j=i+1;ja1;j+) if(U (1) /U) k=j; if(k !=i) temp=a2i;a2i=a2k;a2k=temp; class SortInt_2U (2) /U int i,j,k,temp; void SortInt(int a1, int a2)/降序排序 for(i=0; ia1-1;i+) k=i; for(j=i+1;ja1;j+) if(U (3) /U)k=j; if(k !=i) temp=a2i;a2i=a2k;a2k=temp; public class test public static vo


    注意事项

    本文(【计算机类职业资格】中级软件设计师下午试题-58及答案解析.doc)为本站会员(吴艺期)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开