- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软考2004上年(下午试题)
2004年上半年软件设计师(高级程序员)下午试题
试题一至试题四是必答题 试题一 阅读下列说明和数据流图,回答问题1至问题4,将解答填入答题纸的对应栏内。[说明] 某基于微处理器的住宅安全系统,使用传感器(如红外探头、摄像头等)来检测各种意外情况,如非法进入、火警、水灾等。 房主可以在安装该系统时配置安全监控设备(如传感器、显示器、报警器等),也可以在系统运行时修改配置,通过录像机和电视机监控与系统连接的所有传感器,并通过控制面板上的键盘与系统进行信息交互。在安装过程中,系统给每个传感器赋予一个编号(即id)和类型,并设置房主密码以启动和关闭系统,设置传感器事件发生时应自动拨出的电话号码。当系统检测到一个传感器事件时,就激活警报,拨出预置的电话号码,并报告关于位置和检测到的事件的性质等信息。
[数据流图1-3]
加工4的细化图
[问题1] 数据流图1-1(住宅安全系统顶层图)中的A和B分别是什么?[问题2] 数据流图1-2(住宅安全系统第0层DFD图)中的数据存储“配置信息”会影响图中的哪些加工??[问题3] 将数据流图1—3(加工4的细化图)中的数据流补充完整,并指明加工名称、数据流的方向(输入/输出)和数据流名称.[问题4] 请说明逻辑数据流图(LogicalDataFlowDiagram)和物理数据流图(PhysicalData Flow Diagram)之间的主要差别。
试题二 阅读下列说明和算法,回答问题1和问题2,将解答填入答题纸的对应栏内。[说明] 算法2-1是用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如下所示:
文件 提示信息 (1+2) abc) 缺少对应左括号:第2行,第4列 ((def)gx)) 缺少对应左括号:第3行,第10列 (((h) ij)(k (1ml) 缺少对应右括号:第5行,第4列; 第4行,第1列 在算法2-1中,stack为一整数栈。算法中各函数的说明如下表所示:
函数名 函数功能 push(int i) 将整数i压入栈stack中。 pop() stack的栈顶元素出栈。 empty() 判断stack栈是否为空.若为空,函数返回1,否则函数返回0。 nextch() 读取文本文件中的下一个字符,并返回该字符的ASCII值,将字符所在的行号以及字 符在行中的位置分别存储到变量row和col中,若遇到文件结束符,则将变量EOF 置为true; kind(charch) 判断字符ch是左括号还是右括号,若是左括号,函数返回1,若是右括号,函数返回2, 若两者都不是,函数返回0。 [算法2-1] 将栈stack置空,置EOF为false ch←nextch(); while(not EOF) k←kind(ch); if (k ==__(1)__) push(__(2)__); push(__(3)__); elseif( k ==__(4)__) if(not empty()) pop();pop(): else 显示错误信息(缺少对应左括号或右括号); 显示行号row;显示列号col; endif endif ch←nextch(); endwhile if(not empty()) 显示错误信息(缺少对应左括号或右括号); while(not empty()) row←pop(); col←pop(); 显示行号row;显示列号col; endwhile endif 为了识别更多种类的括号,对算法2-1加以改进后得到算法2-2。算法2-2能够识别圆括号,方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数kind(charch)的参数及其对应的返回值如下表所示:
ch ( ) { } [ ] 其它 返回值 1 2 3 4 5 6 0 [算法2-2] 将栈stack置空,置EOF为false ch←nextch(); while(not EOF) k←kind(ch); if(k 0) if(判断条件1) push(__(5)__):push(__(6)__);push(__(7)__): elseif( 判断条件2 and 判断条件3 ) pop(); pop(); pop(); else 显示错误信息(缺少对应左括号或右括号); 显示行号row;显示列号col; en
文档评论(0)