[计算机类试卷]2004年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc
《[计算机类试卷]2004年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2004年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析.doc(20页珍藏版)》请在麦多课文档分享上搜索。
1、2004年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读下列说明和数据流图,回答问题 1至问题 4,将解答填入答题纸的对应栏内。 说明 某基于微处理器的住宅安全系统,使用传感器 (如红外探头、摄像头等 )来检测各种意外情况,如非法进入、火警、水灾等。 房主可以在安装该系统时配置安全监控设备 (如传感器、显示器、报警器等 ),也可以在系统运行时修改配置,通过录像机和电视机监控与系统连接的所有传感器,并通过控制面板上的键盘与系统进行信 息交互。在安装过程中,系统给每个传感器赋予一个编号 (即 id)和类型,并设置
2、房主密码以启动和关闭系统,设置传感器事件发生时应自动拨出电话号码。当系统检测到一个传感器事件时,就激活警报,拨出预置的电话号码,并报告关于位置和检测到事件的性质等信息。 数据流图 4-1 1 数据流图 4-1(住宅安全系统顶层图 )中的 A和 B分别是什么 ? 2 数据流图 4-2(住宅安全系统第 0层 DFD图 )中的数据存储 “配置信息 ”会影响图中的哪些加工 ? 3 将数据流图 4-3(加工 4的细化图 )中的数据流补充完整,并指明加工名称、数 据流的方向 (输入 /输出 )和数据流名称。4 试说明逻辑数据流图 (logical data flow diagram)和物理数据流图 (ph
3、ysical data flow diagram)之间的主要差别。 5 阅读下列说明和算法,回答问题 1和问题 2,将解答填入答题纸的对应栏内。 说明 算法 2-1是用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如下所示: 文件 提示信息 (1+2) abc) 缺少对应左括号:第 2行,第 4列 (def)8x) 缺少对应左括号:第 3行,第 10列 (h) ij)(k (1ml) 缺少对应右括号:第 5行,第 4列;第 4行,第 1列 在算法 2-1中, stack为一整数栈。算法中各函数的说明如表 4-1所示。 算法 2-1 将栈
4、stack置空,置 EOF为 False chnextch() ; while(not EOF) kkind(ch) ; if(k=(1) push(2); push(3); elself(k=(4) if(not empty() pop(),pop(), else 显示错误信息 (缺少对应左括号或右括号 ); 显示行号 row;显示列号col; endif endif chnextch() ; endwhile if(not empty() 显示错误信息 (缺少对应左括号或右括号 ); while(not empty() rowpop() ; colpop() ; 显示行号 row;显示列号
5、 col cndwhile endif 为了识别更多种类的括号,对算法 2-1加以改进后得到算法2-2。算法 2-2能够识别圆括号,方括号和花括号 (不同类型的括号不能互相匹配 )。改进后,函数 kinnd(char ch)的参数及其对应的返回值如表 4-2所示。 表 4-2 函数的参数及其返回值 算法 2-2 将栈 stack置空,置 EOF为 False chnextch() ; while(not EOF) kkind(ch) ; if(k 0) if( 判断条件 1 ) push(5); push(6); push(7); elseif( 判断条件 2 and 判断条件 3 ) pop
6、(); pop(); pop(); else 显示错误信息 (缺少对应左括号或右括号 ); 显示行号 row;显示列号 col; endif endif chnexteh() ; endwhile if(not empty() 显示错误信息 (缺少对应左括号或右括号 ); while(not empty() pop(); rowpop() ;colpop() ; 显示行号 row;显示列号 col; endwhile endif 5 试将 算法 2-1)和 算法 2-2中 (1) (7)处补充完整。 6 从下面的选项中选择相应的判断逻辑填补 算法 2-2中的 “判断条件 1”至 “判断条件 3
7、”。注意,若 “判断条件 2”的逻辑判断结果为假,就无需对 “判断条 件 3”进行判断。 (a)字符是括号 (b)字符是左括号 (c)字符是右括号 (d)栈空 (e)栈不空 (f)栈顶元素表示的是与当前字符匹配的左括号 (g)栈顶元素表示的是与当前字符匹配的右括号 7 阅读下列说明以及图 4-4和图 4-5,回答问题 1、问题 2和问题 3,将解答填入答题纸的对应栏内。 说明 某电话公司决定开发一个管理所有客户信息的交互式网络系统。系统的功能如下。 1浏览客户信息:任何使用因特网的用户都可以浏览电话公司所有的客户信息 (包括姓名、住址、电话号码等 )。 2登录:电话公司授予每个客户一个账号。拥
8、有授权账号的客户,可以使用系统提供的页面设置个人密码,并使用该账号和密码向系统注册。 3修改个人信息:客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人信息进行修改。 4删除客户信息:只有公司的管理人员才能删除不再接受公司服务的客户的信息。系统采用面向对象方法进行开发,在开发过程中确定的类如表 4-3所示。 表 4-3 开发过程中确定的类7 在需求分析阶段,采用 UML的用例图 (use case diagram)描述系统功能需求,如图 4-4所示。指出图中的 A,B,C和 D分别是哪个用例 ? 8 在 UML中,重复度 (multiplicity)定义了某个类的一个实例可以与另
9、一个类的多个实例相关联。通常把它写成一个表示取值范围的表达式或者一个具体的值。例如,图 4-5中的类 InternetClient和 CustomerList, InternetClient端的 “0.*”表示: 1个 CustomerList的实例可以与 0个或多个 InternetClient的实例相关联;CustomerList端的 “1”表示: 1个 InternetClient 的实例只能与 1个 CustomerList的实例相关。 指出图 4-5中 (1) (4)处的重复度分别为多少 ? 9 类通常不会单独存在,因此当对系统建模时,不仅要识别出类,还必须对类之间的相互关系建模。在
10、面向对象建模中,提供了 4种关系:依赖 (dependency)、概括(generaliza tion)、关联 (association)和聚集 (aggregation)。分别说明这 4种关系的含义,并说明关联和聚集之间的主要区别。 10 程序 START PRUGBC LD GR0, DATA LEA GR1, 0 LEA GR3, 48 LOOP1 CPL GR0, WDT, GR1 JP2 LOOP2 ST GR3, BTASC, GR1 LEA GR1, 1, GR1 LEA GR2, -4, GR1 JN2 LOOP1 (1) LOOP2 LEA GR2, 48 LOOP3 CPL
11、 GR0, WDT, GR1 JMI NEXT (2) LEA GR2, 1, GR2 JMP LOOP3 NEXT (3) LEA GR1, 1, GR1 LEA GR2, -4, GR1 JNZ LOOP2 LAST (4) ;处理个位数 (5) EXIT C48 DC 48 WDT DC 10000 DC 1000 DC 100 DC 10 BTASC DS 5 DATA DC #FA59H END 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 11 函数 int DeleteNode(Bitr
12、ee *r, int e) Bitree p=* r, pp, s, c; while(1)/ * 从树根结点出发查找键值为 e的结点 * / pp p; if(e p data) p p Lchild; else p p Rchild if(! p)return-1; / * 查找失败 * / if(p- Lchild & p- Rchild)/ * 处理情况 * / s=(2); pp=p; while(3)pp=s; s=s- Rchild; p- dara=s- data; P=s; / * 处理情况 、 * / if(4)c=p- Lchild; else c=p- Rchild i
13、f(p=*r) *r c; else if(5)pp- Lchild=c; else pp- Rchild=c; free(p); return 0; 12 程序 #include ioStream.h template class T class Array; template class T class ArrayBody friend (1); T* tpBody; int iRows, iCurrentRow; ArrayBOdy(int iRsz, int iCsz) tpBody=(2); iRows=iRsz, iColumns=iCsz; iCurrentRow=-1; pub
14、lic: T& operator(int j) bool row_error, column_error; row_error=column_error=false; try if(iCurrentRow 0|iCurrentRowiRows) row_error=; if(j 0| jiColumns column_error=; if(row_error=true | column_error=true) (3); eatch(char) if(row error=true) cerr “行下标越界 “ iCurrentRow ”; if(column error=true) cerr “
15、列下标越界 “ j ”; cout “n”; return tpBodyiCurrentRow * iColumns+j; ArrayBody()deleretpBody; ; template class T class Array ArrayBody T tBody; public: ArrayBody T & operator(int i) (4); return tBody; ; void main() Array int a1(10, 20); Array double a2(3, 5); int b1; double b2; b1=a1-510; / * 有越界提示:行下标越界 -
16、5 * / b1=a11015; / * 有越界提示:行下标越界 10 * / b1=a114; / * 没有越界提示 * / b2=a226; / * 有越界提示:列下标越界 6 * / b2=a21020; / * 有越界提示:行下标越界 10列下标越界 20 * / b2=a214; / * 没有越界提示 * / 2004年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【正确答案】 A:传感器; B:报警器 【试题解析】 本题是一道分层数据流图的题目。解答此类问题最关键的一点就是要细心,把题目看清,不要丢掉任
17、何一个条件。另外解题有一定的技巧,从一些常规的入口作为突破口,会事半功倍。现在就利用分层数据流图的数据流的平衡原则 (即父图和子图 (加工图 )的一致 性 )来解题。 子图是其父图中某一部分内部的细节图 (加工图 )。它们的输入输出数据流应该保持一致。如同看到地上有只蚂蚁有 6条细细的腿,中间是一个小黑点,要看得更清楚一些就拿放大镜看。这时能看到它的头、触角、身体和比较粗的腿,但是看到的一定还是 6条腿,不是 7条,也不是 3条。子图也是如此,在上一级中有几个数据流,它的子图也一定有同样的数据流,而且它们的输送方向是一致的 (也就是说原图有 3条进的数据流, 2条出的数据流,子图同样也是 )。
18、 用这条原则可以轻松地解决问题 3。在 0层图中, “4监控传感器 ”模块有 1条输入数据流 “传感器状态 ”和 3条输出数据流 “电话拨号 ”、 “传感器数据 ”和“告警类型 ”。在加工 4的细化图中,仅看到了输出数据流 “告警类型 ”,所以知道此加工图少了 “传感器状态 ”、 “电话拨号 ”、 “传感器数据 ”这 3 条数据流。加工 4的结构非常清晰,所以只需把这 3条数据流对号入座即可, “电话拨号 ”应是 “4.5拨号 ”的输出数据流; “传感器状态 ”应是作为 “4.4读传感器 ”处理的输入数据流;“传感器数据 ”应该是经 “4.1显示格式 ”处理过的数据流,所以作为 “4.1显示格
19、式 ”的输出数据流。 此题和以往试题有所不同。以往都给 定了完整正确的顶层图。现在顶层图不完整,可以通过题目说明信息以及顶层图来分析顶层图并解答问题。题目中提到了“房主可以在安装该系统时配置安全监控设备 (如传感器,显示器,报警器等 )”在顶层图中这 3个名词都没有出现,但仔细观察,可以看出 “电视机 ”实际上就是 “显示器 ”。因为它接收 TV信号并输出。再看其他的几个实体都和 “传感器 ”“报警器 ”没有关联。又因为 A中输出 “传感器状态 ”到 “住宅安全系统 ”所以 A应填 “传感器 ”。B 接收 “告警类型 ”,所以应填 “报警器 ”。 2 【正确答案】 3.密码处理; 4监控传感器
20、; 5显示信 息和状态 【试题解析】 首先,毫无疑问 “4监控传感器 ”用到了配置信息文件,这点可以在加工 4的细化图中看出。接着,观察。层图, “3密码处理 ”这个处理是用于检验密码的,且它只有 1个输出数据流 “检验 ID信息 ”到 “显示信息和状态 ”,没有反馈回来的数据流,所以 “检验 ID信息 ”是已经验证通过的用户的信息,用户输入密码应是在 “3密码处理 ”这个环节中进行验证的 (因为如果密码验证是在 “5显示信息和状态 ”中进行的,那么从 “5显示信息和状态 ”应有 1条不合法用户的数据流反馈到 “密码处理 ”)。所以 “密码处理 ”一定要用到配置信息 文件中的用户名和密码。同时
21、由于输出到 “5显示信息和状态 ”的数据流是 “检验 ID信息 ”,所以 “5显示信息和状态 ”也用到了配置信息文件。 4 【正确答案】 物理数据流图关注的是系统中的物理实体,以及一些具体的文档、报告和其他输入输出硬拷贝。物理数据流图用作系统构造和实现的技术性蓝图。 逻辑数据流图强调参与者所做的事情,可以帮助设计者决定需要哪些系统资源;为了运行系统用户必须执行的活动;在系统安装之后如何保护和控制这些系统等。 在逻辑数据流图中说明应该具有哪些加工和数据存储,而不关心这些加工和数据存 储是如何实现的;物理数据流图则要说明加工和数据存储是如何实现的。 5 【正确答案】 (1)1 (2)col (3)
22、row (4)2 (5)col (6)row (7)k 【试题解析】 本程序的功能是检查文本文件中的圆括号是否匹配。从提示信息中,可以看出程序不但可以检查出是否有括号匹配错误,而且还知道具体错在哪个括号。由于括号匹配的规则是把最近的左右括号配成一对,所以括号匹配最常用的方法是遇到左括号则入栈,遇到右括号就出栈,出栈的友括号与当前的右括号是匹配的。此算法也不例外。 下面具体分析算法 : 首先,把栈置空,置 EOF为 False,并从文件中读取第一个字符到 ch。然后进入循环,循环体执行一次处理一个 ch。进入循环,利用 kind函数算出 ch 的类型k,接下来就是一大堆的空了,这个算法本身并不长
23、,但空有这么多,而且比较集中,为解题增加了一定的难度。这里虽然空多,但基本结构却很明显,大致流程如下: 当 k 等于什么的时候把什么入栈,当 k等于什么的时候且栈不为空的时候出栈,如栈为空打印错误信息,如果都不是则读文件下一个字符再次进入循环。 再结合上面提到的算法,可以知道,入栈应是在类型 k为 1(即 ch为左括号时 ),出栈应是在类型 k为 2(即 ch 为右括号时 )。所以 (1)空应填 1, (4)空应填 2。 (2)和 (3)到底是把什么压入栈了呢 ?在 (4)下面出栈时,并没有用到栈的内容。在此有些考生理所当然地认为栈中的内容没有什么用,随便压个 ch 进去了,而且 2个都是写的
24、 ch。其实从逻辑上就可以推翻这种解答,如果是压的同样的数据,又是在同一位置出栈,算法大可只用个 push, pop就可以了。这时继续往后面看,来寻找正确的答案。当看到 “row pop(); col pop(); ”时,所有的疑惑可迎刃而解了,应该把 row和 col压入堆栈 !那么 row 和 col谁先谁后呢 ?由于是先弹出row 后弹出 col,按栈的后进先出的规则,可知先压入栈的是 col,再压入 row。所以 (2)空填写 col, (3)空填写 row。 完成 算法 2-1的分析后,分析 算法 2-2就比较轻松了。 (5)(6)(7)空的答案可直接到后面找到,因为后面有 “pop
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2004 上半年 软件 水平 考试 中级 设计师 下午 应用技术 试题 答案 解析 DOC

链接地址:http://www.mydoc123.com/p-492459.html