[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷57及答案与解析.doc

上传人:cleanass300 文档编号:507226 上传时间:2018-11-29 格式:DOC 页数:15 大小:699KB
下载 相关 举报
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷57及答案与解析.doc_第1页
第1页 / 共15页
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷57及答案与解析.doc_第2页
第2页 / 共15页
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷57及答案与解析.doc_第3页
第3页 / 共15页
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷57及答案与解析.doc_第4页
第4页 / 共15页
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷57及答案与解析.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 57及答案与解析 一、必答题(共 4道大题,每道大题 15分) 0 阅读下列说明和图,回答问题 1至问题 3,将解答填入答题纸的对应栏内。【说明】一个新的音像商店准备向比较广泛的人群出租录像带和光碟。该商店的管理决定在计算机系统的支持下来运作。音像商店在货架上存放着题材广泛的当前流行的电影库。由于同一个电影片名可能有于不同的导演而有不同的版本,因此电影用电影代码区分,而不用电影片名;回一个版本有多份拷贝,因此音像制品用一个唯一的编号标识。某个特定的电影可 以存放在录像带或光碟上,录像带和光碟的租金不同。录像带要么足 Beta格式要么是

2、 VHS格式;光碟为 DVD格式,容量比较大,一张光碟可以存储同一电影片名的不同版本。每个电影都有特定的租用期 (用天表示 ),并带有在租用期内的租金。音像商店必须能够立即回答关于某个电影的库存和有多少供租用的带子或光碟。音像商店的店员负责定购音像、联系客户、音像上架,并对客户的洵问给出答复。该系统采用面向对象方法开发,系统中的类以及类之间的关系用 UML类图表示,图 1l是该系统的用例图,图 12是该系统的类图的一部分。【图 11】【图12】 1 根据题意,给出 “电影 ”类的主要属性。 2 根据题意,指出图 1一 1中缺失的用例。 3 根据题意,补充图 12的类图中缺失的类之间的关系,用

3、UML表示法表示。要求标出重复度。在 UML中,重复度 (Multiplicity)定义了某个类的一个实例可以与另一个类的多少个实例相关联。通常把它写成一个表示取值范围的表达式或者一个具体的值。 3 阅读下列说明和图,回答问题 1至问题 3,将解答填入答题纸的对应栏内。【说明】为了有效记录交通事故情况,欲设计一个交通事故记录系统。一辆汽车有一个唯一的 “车牌号 ”,车主购买汽车时需要提供相关信息,包括身份证、姓名、年龄、性别、地址等。一个车主可以拥有多辆汽车,而一辆汽车只有一个车主。驾驶员不一定是车主,因此记录交通事故时要记录驾驶员身份证号,同时记录事故发生时刻。图 2一 1描绘了人、汽车、交

4、通事故三个实体类型及实体间联系的一个 ER图。【图 21】对应的关系模式为:人 (身份证号,姓名,性别,年龄,地址 )汽车 (车牌号,型号 )事故 (车牌号,身份证号,时刻,损失,描述 )拥有 (身份证号,车牌号 ) 4 指出每种关系模式的主键。 5 创建人表时, “身份证号 ”使用 INTEGER数据类型,并且要求此列值不能为空、值唯一,姓名列不能为空。请在下列用于创建表人的 SQL语句空缺处填入正确的内容。 CREATE TABLE人 (身份证号工 NTEGER, 姓名 cHAR(20)(1), 性别 CHAR(1), 年龄 INTEGER, 地址 CHAR(20), (2) 6 请在下列

5、 SQL查询语句空缺处填入正确的内容 (1)查询身份证号为 “123456”的人作为驾驶员时所有的事故记录。 SELECT*FROM事故 WHERE(1) (2)查询身份证号为 “123456”的车主所拥有的 汽车的事故记录。 SELECT*FROM事故 wHERE车牌号 (2) (SELECT车牌号 FROM(3)WHERE身份证号 =“123456”) (3)查询车牌号为 “123456”汽车在车主是驾驶员时的事故记录。 SEL,ECT*FROM事故 WHERE(4) (SELECT*FROM (5)WHERE车 7 阅读下列说明和图,回答问题,将解答填入答题纸的对应栏内。【说明】在数据链

6、路层扩展局域网时使用网桥。网桥工作在数据链路层,它根据 MAC帧的目的地址对收到的帧进行转发。网桥具有过滤帧的功能:当网桥收到一个帧 时,并不是向所有的端口转发此帧,而是先检查此帧的目的 MAC地址,然后确认将该帧转发到哪个端口。最简单的网桥有两个端口 (即接口 )。网桥的每个端口与一个网段相连。每当收到一个帧时,通过查找转发表将收到的帧转发。当一个网桥刚刚连接到局域网上时,其转发表是空的,此时若收到一个帧,按照以下算法处理和建立自己的转发表: (1)从端口 x收到的无差错的帧 (如有差错即丢弃 ),在转发表中查找目的站MAC地址; (2)如有,则查找出到此 MACtl电址应走的端口 d,然后

7、进行 (3),否则转到 (5); (3)如到这个 MAC地址去的端口 d=x,则丢弃此帧 (因为这表示不需要经网桥进行转发 ),否则从端口 d转发此帧; (4)转到 (6); (5)向网桥除 x以外的所有端口转发此帧 (这样做可以保证找到目的站 ); (6)如源站不在转发表中,则将源站MAC地址加入转发表,登记该帧进入网桥的端口号,设置计时器,然后转到 (8),如源站在转发表中,则执行 (7); (7)更新计时器; (8)等待新的数据帧,转到 (1)。这时,网桥就在转发表中登记以下三个信息:站地址 登记收到帧的源 MAC地址、端口 登记收到的帧进入该网桥的端口号、时间 登记收到的帧进入该网桥的

8、时间。现有五个 工作站分别连接在三个局域网上,并且用两个网桥连接起来,如图 31。每一个网桥的两个端口号都标明在图上。在一开始,两个网桥中的转发表都是空的。以后有以下各站向其他的站发送了数据帧,即 H1发送给 H5, H3发送给 H2, H4发送给 H3, H2发送给 H1。【图 3-1】【问题】试将有关数据填写在表中。其中,网桥的处理有:转发、丢弃或登记。假定帧均无差错。8 阅读下列函数说明、图和 C代码,将应填入 (n)处的字句写在答题纸对应栏内。 【说明】 在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里。为了提高查找和定位的速度,通常都要画出与单词列表所对应的单词查找树

9、。程序构造一棵二叉排序树,每个节点存储一个单词,按字典序列,较小的在左子树,较大的在右子树。 函数中使用的预定义符号如下: typedef struct TreeNode *二叉排序树节点 * char*word; struct TreeNode *left, *right; BNODE; 【函数】 int getWord(FILE*fpt, char*word) *从文件 fpt中 读取单词 Nword中,到达文件结束时返回 0* charc ; C=fgetc(fpt); if(C=EOF)return 0; *跳过单词间的非字母字符 * while(!(tolower(c) = a pt

10、r一 left=ptr一 right=NULL; ptr一 word= (char*)malloc(strlen(word) +1); strcpy(ptr一 word, word); if(p=NULL) (4) ; else if(compres0) p一 right=ptr; )else p一 left=ptr; int main() FILE*fpt; char word40; BNODE*rool=NULL: if(fpt=fopen(“text in”, “r”)=NULL) printf(“不能打开文件 text in! n”); return1; whi1e(getWord(f

11、pt, word)=1) BTree(5); fclose(fpt); return0; 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 9 阅读下列函数说明和 C+代码,将应填入 (n)处的字句写在答题纸对应栏内。【说明】在销售系统中常常需要扣印销售票据,有时需要在一般的票据基础上打印脚注。这样就需要动态地添加一些额外的职责。如下展示了 Decorator(修饰 )模式。Salesorder对象使用一个 SalesTicket对象打印销售票据,先打印销售票据内容,然后再打印脚注。图 51显示了各个类间

12、的关系。以 F是 C+语言实现,能够正确编译通过。【图 51】 【 C+代码】C1ass ComponentpubliC: (1) VOid prtTicket()=0;; class SalesTicket: publiC ComponentpubliC: void prtTicket()coutprtTicket(); class Footer: public Decoratorpublic: Footer(Component*myC); void prtTicket(); V0id prtF00ter(); ;F00ter: Footer(Component*myC) : (3) (vo

13、id FOoter:prtF00ter()coutprtTicket(); 10 阅读以下说明和 Java代码,将应填入 (n)处的字句写在答题纸对应栏内。【说明】在销售系统中常常需要打印销售票据,有时需要在一般的票据基础上打印脚注。这样就需要动态地添加一些额外的职责。如下展示了 Decorator(修饰 )模式。Salesorder对象使用一个 SalesTicket对象打印销售票据。图 6一 1显示了各个类间的关系。以下是 Java语言实现,能够正确编译通过。【图 6一 1】【 Java代码】 c。mponent java文件 public (1) class component abst

14、ract public void prtTicket(); salesTicket java文件 Dublic class SalesTicket extends Component publ ic void prtTicket() Sales ticket printing code hereSystem out println(“SalesTicket”); Decorator j ava文件 Dubl ic abstract class Decorator extends C0mpOnent public void prtTicket() if(myComp !=null)myComp

15、prtTicket(); priVate (2) mycomp;public Dec。 rator(Component myC)myComp=myC; F00ter java文件Dublic class F00ter extends Decorator publ ic F00ter(C0mponent myC)(3); publ ic Void prtTicket() (4); prtFooter(); publ ic void prtF00七 er() place printing footer code here System out println(“Footer”); salesOrd

16、er java文件 publ ic class SalesOrder void prtTicket() Component myST; mysT=new Footer(5); print Ticketwith footers as needed myST prtTicket(); 11 阅读以下说明和 C代码,将应填入 (n)处的字句写在答题纸对应栏内。【说明】函数 combine(a, b, c)是计算两个整数的组合数。由于计算结果可能超出 long整型的可表示范围,故采用数组方式存储,例如: k位长整数 m用数组 c口存储结构如下: m=ck10k-1+ck一 110k-2+c210+c1

17、 ,利用 c0存储长整数 m的位数,即 c0=k。数组的每个元素只存储长整数 m的一位数字,长整数运算时,产生的中间结果的某位数字可能会大于 9,这是就应该调用 fonnat将其归整,使数组中的每个元素始终只存储长整型的一位数字。整数 a和 b(ab)的组合数为:其中 u1=a, u2=a1, , ub=ab+1, d1=1, d2=2, , db=b。为了计算上述分式,先从 u1, u2, , ub中去掉 d1d 2d b的因子,得到新的 u1, u2, , ub,然后再将它们相 乘。【函数】 #define MAXN 100 int gcd(int a, int b)求两个整数 a和 b的

18、最大公因子 if(a=2; i一一 ) if( (1) )return i; return 1: void format(int*a)将长整型数组归整 int i; for(i=1; i=1 0; i+) i f(i =a0) (2) ; ai+1 +=ai 10; ai =ai 10; if(ia0) (3); void combine(inta, intb, int*c) int i, j, k, x; int dMAXN, uMAXN; k=0: for(i=a; i=ab+1; i一一 )u+k = i; u0 =b; for(i=1; i 软件水平考试(中级)软件设计师下午(应用技术

19、)试题模拟试卷 57答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【正确答案】 电影代码、电影片名、导演 【试题解析】 “由于同一个电影片名可能有于不同的导演而有不同的版本,因此电影用电影代码区分,而不用电 影片名;同一个版本有多份拷贝,因此音像制品用一个唯一的编号标识。 ”,由此可得电影的主要属性:电影代码、电影片名、导演。注意: “编号 ”不是 “电影 ”的属性,而是 “音像制品 ”的属性。 2 【正确答案】 (A)“定购音像 ”(B)“联系客户 ” 【试题解析】 图 1一 1是该系统的用例图。根据题述, “音像商店的店员负责定购音像、联系客户、音像上架,并对客户的询问给出

20、答复 ”,易知缺失的用例为:“定购音像 ”和 “联系客户 ”。 3 【正确答案】 【试题解析】 UML中的关系有依赖、关联、泛化和实现。依赖 (dependencY)是两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。关联是一种结构关系,聚集 (aggregation)是一种特殊类型的关联,描述整体和部分之间的结构关系。泛化 (generalization)是一种特殊一般关系。实现 (realizalion)是类元之间的语义关系,其中一个类元制定了由另一个类元保证执行的契约。 “音像制品 ”是电影的载体,自然与 “电影 ”有关联,关联度是多少呢 ?先来看 “音像制品 ”与“录

21、像带 ”,及 “光碟 ”间的关系, “录像带 ”及 “光碟 ”都是 “音像制品 ”的不同存储格式 ,因此 “录像带 ”及 “光碟 ”,都是 “音像制品 ”的特殊化。再回到 “音像制品 ”与 “电影 ”的关联度, “录像带 ”只存储一个电影版本,而 “光碟 ”可以存储多个版本,因此一个 “音像制品 ”有一个或多个 “电影 ”,一个 “电影 ”可以存储于多个 “音像制品 ”中(当然也可能没有 )。一个 “音像制品 ”对应多个 “租用记录 ”,一个租用记录只对应一个 “音像制品 ”。试题一答案 4 【正确答案】 人:身份证汽车:车牌号事故: (车牌号,身份证 )拥有:车牌号 【试题解析】 身份证号是

22、唯一的,可作为人的主键。依题述, “一辆汽车有一个唯一的 车牌号 ”,因此汽车关系的主键为:车牌号。一起事故自然与某量车 (车牌号标识 )相关,而 “驾驶员不一定是车主 ”,因此还须记录驾驶员 (身份证标识 ),故其主键为: (车牌号,身份证号 )。 “一个车主可以拥有多辆汽车,一辆汽车只有一个车主 ”,因此拥有关系的主键为:车牌号。 5 【正确答案】 (1)NOTNULL(2)PRIMARYKEY(身份证号 ) 【试题解析】 要求姓名列非空,故空 (1)填 NOTNULL,列级约束。身份证号是该表的主键,创建表时需要声明,故空 (2)应填 PRIMARYKEY(身份证号 ),是表级约束。声

23、明主键也可以用列级约束实现,即在列后紧跟 NOTNULL和UNQUIE。 6 【正确答案】 (1)身份证号 =”123456”(2)IN(3)拥有 (4)EXISTS(5)拥有 (6)拥有身份证号 =事故身份证号 【试题解析】 这里都是一些比较简单的小查询。空 (1)处填身份证号 =”123456”,表示 “身份证号为 123456”语意。空 (2)填 IN。连接子查询的连接词有: IN、NOTIN、 EXISTS、 NOTEXISTS,根据语意,此处应为 IN。 FROM之后应跟表名或视图名,根据语意,应该是从拥有表中选出 满足条件的车牌号,故空 (3)应填“拥有 ”。查询 (3)要求车牌号

24、是 123456、车主是驾驶员的事故记录,空 (4)同空 (2),据语意应填 EXISTS。空 (5)同空 (3),据语意可得应填 “拥有 ”,车主信息是在拥有表中,事故时驾驶员信息是在事故表中,要求车主是驾驶员,则空 (6)应为:拥有身份证号 =事故身份证号, “拥有身份证号 ”即为车主信息, “事故身份证号 ”即为事故时驾驶员信息。 7 【正确答案】 【试题解析】 本题考察的是网桥的工作原理。网桥工作在数据链路层,它根据MACI帧的目的地址对收到的帧 进行转发。网桥具有过滤帧的功能:当网桥收到一个帧时,并不是向所有的端口转发此帧,而是先检查此帧的目的 MAC地址,然后确认将该帧转发到哪个端

25、口。认真阅读建立转发表的算法不难解答该题。需要特别注意的是:步骤 (6)是检查源站,而不是目的站,若源站不在转发表,将其加入,以后作为目的站地址待查。 8 【正确答案】 (1)ptr=*t(2)ptr一 word(3)p=ptr (4)*t=ptr(5)&root, word 【试题解析】 ptr指针在使用前需要初始化,空 (1)应填 ptr=*t。构造的是二叉排序树, 空 (2)自然是比较单词 word与 ptr指针所指的节点单词,故应填 ptr一 word。空 (3)接下来的修改指针 ptr使 ptr手旨向了其子节点,为了正确插入节点,需要记录父节点指针。因此 ptr需要保存下来,故空 (

26、3)应填 p=ptr。p=NULL对应的是空树的情况,因此空 (4)应填 *t=ptr。参照 BTree函数的定义,空 (5)应填 &root, word。注意是 &root而不是 root。 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效 。 9 【正确答案】 (1)virtual (2)Component* (3)Decorator(myC) (4)Decorator: prtTicket() (5)newSalesTicket() 【试题解析】 由函数 prtTicket0结尾的 “=0”易知,该函

27、数是纯虚函数,须声明为virtual,故空 (1)应填 virtual。 thDecorator构造函数以及类图可知, Decorator包含 个 Component对象引用,故空 (2)应填 Component*。注意是指针。函数Footer(Component*myC)是 Footer类的构造函数,故空 (3)处是对基类的构造,因此空 (3)应填 Decorator(myC)。 Footer类的 prtTicket0方法是先打印 “基本 ”票据,再打印脚注。因此空 (4)是打印 “基本 ”票据, Footer类是 Decorator的子类,故应先调用基类的打印方法,在此应填 Decorat

28、or: prtTicket()。:为域作用符。参照 Footer类的参照函数,空 (5)应为一个 Component对象指针,这里是要打印带脚注的票据,故此处应填 newSalesTicket()。 10 【正确答案】 (1)abstract(2)Component(3)super(myC) (4)superprtTicket()(5)newSalesTicket() 【试题解析】 方法 prtTicket0声明为 abstract,即是抽象方法,故 Component类应为抽象类,因此空 (1)应填 abstact。 Decorator构造函数以及类图可知,Decorator包含一个 Com

29、ponent对象引用,故空 (2)应填 Component。函数Footer(Component*myC)是 F00ter类的构造函数,故空 (3)处是对基类的构造,因此空 (3)应填 super(myC)。 Footer类的 prtTicket()方法是先打印 “基本 ”票据,再打印脚注。因此空 (4)是打印 “基本 ”票据, Footer类是 Decorator的子类,故应先调用基类的打印方法,在此应填 super prtTicket()。 super是对基类的引用。参照Footer类的参照函数,空 (5)应为一个 Component对象指针,这里是要打印带脚注的票据,故此处应填 newS

30、alesq“icket()。 11 【正确答案】 (1)a i=0 &b i=0(2)ai+1=0(3)a0=i (4)c0=1(5)ui*cj 【试题解析】 函数 gcd()是用来求最大公约数的,从 “if(a=a0”的情况下执行的,而 for循环条件是“i=10”,则必然意味着 “ai=10”,需要 进位调整,而接下来的语句“ai+1+=ai1 10”暗示此时 ai+1需要赋初值 0。故空 (2)应填 “ai+1=0”。执行到空 (3)调整已经结束,若 if条件 “ia0”成立意味着整数归整后,位数已经突破了原来的 a0,需要调整为当前的位数。故空 (3)应填 “a0=i”。空 (4)是初始化长整数 c的,接下来的是乘法操作,因此初始化为 1,即 c1=1,显然应该将 c0也初始化为 1。故空 (4)应填 “c0=1”。从注释知空 (5)所在的二重循环是将 u中的各整数相乘存入 c中,需要将 c的每一位与 u的每一位相乘,故空 (5)应填 “ui*cj”。

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

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

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