您好,欢迎来到年旅网。
搜索
您的当前位置:首页软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷3(

软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷3(

来源:年旅网


软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷3

(题后含答案及解析)

题型有:1. 必答题 2. 选答题

必答题(共4道大题,每道大题15分)

阅读以下说明,回答问题1~3,将解答填入对应的解答栏内。[说明] 现有两个应用,涉及到两个关系模式: R1 (A#,A1,A3,B#,D1),其上的函数依赖F={A#→A1,A#→A2,A#→A3,(A#,B#)→D1} R2 (B#,B1,B2),其上的函数依赖F={B #→B1,B#→B2}

1. 如果将上述应用的数据库设计成如下关系模式; RS(A#,A1,A2,A3,B#,B1,B2,D1),请指出该关系模式的候选键。

正确答案:(A#,B#)

2. 假设上述关系模式RS上存在函数依赖:A1→A3。上述关系模式RS最高满足第几范式(在1NF~BCNF 之内)?为什么?

正确答案:最高满足INF

3. 如果将上述应用的数据库设计为如下三个关系模式: R1(A#,A1,A2,A3) R2(B#,B1,B2) R3(A#,B#,D1)那么关系模式R2是否一定满足第3范式?为什么?

正确答案:满足第三范式

解析:根据候选关键字的定义:设关系模式R (A1,A2,…,An),F是R上的函数依赖集。X是R的一个子集,①x→A1A2…An∈F+(它的意思是X能够决定唯一的一个元组)。②不存在X的真子集Y,使得Y也能决定唯一的一个元组,则X就是R的一个候选键(它的意思是,X能决定唯一的一个元组但又没有多余的属性集。)由于(A#,B#)+=(A#,A1,A2,A3,B#,B1,B2,D1),即 (A#,B#)→(A#,A1,A2,A3,B#,B1,B2,D1)∈F+,而且(A#)+=(A#,A1,A2,A3),(B#)+=(B#,B1,B2)。因此,(A#,B#)是关系模式贴的候选键。假设第二问的关系模式RS上存在函数依赖:A1→A3,则贴只满足1NF,不满足2NF,因为存在非主属性A3对键(A#,B#)的传递依鞍,而且存在非主属性对键的部分函数依赖。在第三问中,因为R2中有两个非主属性B1和B2,候选键是B#,既不存在非属性对候选键的部分函数依赖,也不存在非主属性对候选键的传递函数依赖。

阅读以下说明,回答问题1~3,将解答填入对应的解答栏内。[说明] 下图是有关学生(student)和学习(study)信息的对象关联图。

4. 试解释这个对象联系图。

正确答案:对象student 包含身份证号,姓名,籍贯和学习(studies)等属性,对象study 包含课程名,成绩,求学地,大学以及学生(student )等属性。对象student 和 study 之间联系为1:N。基本表的创建,修改和撤销语句语法为: CREATE TABLE SQL 模式名. 基本表名(列名类型, 完整性约束,…);其中,完整性约束包括主键子句,检查子句和外键子句。

5. 试用ORDB的定义语言,定义这个数据库。

正确答案:CREATETYPE MyString char vaiying; CREATE TABLE student( sno integer, shame MyString, city MyString studies setoff( ref(study))); CREATETABLE study(cours

6. 使用ORDB的查询语言,分别写出下列查询的SELECT语句;1)检索每个学生的学习课程和成绩。2)检索至少有一门课程的求学地与籍贯在同一城市的学生的学号和姓名。

正确答案:1) SELECT A. sname, B. coursename, B. gradeFROM student as A, A. studies as B;2) SELECT A. sno, A. sname FROM student asA, A. student as B WHERE A. ciy = B. ciy

7. 阅读以下说明,回答问题1~4,将解答填入对应的解答栏内。[说明] 假设二叉树采用链式存储方式存储,编写一个后序遍历二叉树的非递归方式。 Void postorder (btree * B) { btree * stack [m0] , *p; int tag [m0], top =0; p=b; do {while (p! =NULL) { top+ +; (1) tag [top] =0; p =p- >left;}if (top >0){ (2)if (tag[top3 = =1){ (3)print (“%d”, p- >data);}if(top>0){ (4) tag [top] = 1;} } } while (p! = NULL && top ! =0) }

正确答案:(1) stack [top]=p;(2) p=stack [top];(3) top--;(4) p=p->right; 解析:根据后序遍历二叉树的递归定义,转换成非递归函数时采用一个栈保存返回的结点,先扫描根结点的所有左结点并入栈,出栈一个结点,然后扫描该结点的右结点并入栈,再扫描该右结点的所有左结点并入栈,当一个结点的左右子树均访问后再访问该结点,如此这样,直到栈空为止。在访问根结点的右子树后,当指针p指向右子树树根时,必须记下根结点的位置,以便在遍历右子树之后正确返回。这里采用两个栈stack 和tag,并用一个共同的栈顶指针,并用一个共同的栈顶指针,一个存放指针值,一个存放左右子树标志(0为左子树,1为右子树)。退栈时在退出结点指针的同时去判断是遍历左子树返回的还是遍历右子树返回的,以决定下一步是继续遍历右子树还是访问根结点。

阅读以下说明,回答问题,将解答填入答题纸对应的解答栏内。[说明] 现由下两种游戏,游戏A是掷一个硬币两次,如果两次都是正面,玩家给你10元,每出现一次反面,你给玩家2元。游戏B仍然是你掷一个硬币两次,但是你玩一次付2元,如果两次都是正面,他付给你10元。

8. 画出该问题的风险决策树,你会选择玩哪个游戏?

正确答案:根据风险决策树可知,两个游戏的总和都是0.5元,因此,每玩一次游戏,平均获利50分,选择哪个游戏都是一样的。

解析:风险是发生不可预见的事件的可能性。将各种风险进行可视化的技术是建立风险决策树。顶层的分支根据可供选择的风险而分开。下一层的分支依据事件发生的概率。每个叶结点都有某一事件的风险揭露。顶层分支下的所有叶结点的风险揭露的总和为该选择的总风险揭露。

9. 如果在游戏A中付5元,游戏B中付4元,使用风险决策树分析应该选择哪个游戏。

正确答案:由上面的风险决策树可知,两个游戏都会损失你的钱。在游戏A中,平均损失0.75元,而在游戏B中平均损失 1.50元。

选答题(共3道大题,每道大题15分)从下列3道试题中任选1道解答,如果解答的试题数超过1道,则仅题号小的1道题解答有效。

10. 阅读以下说明和C++码,将应填入(n)处的字名写在对应栏内。 从下列的3道试题(试题五至试题七)中任选1道解答。 如果解答的试题数超过1道,则题号小的1道解答有效。 [说明] 编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a: xxk1. dat”中。 (1) # include <fstream. h > # include < stdlib. h > void main ( ) { (2) if ( ! four) { cerr < <“文件没有找开!” < <end1; exit (1); }

int x; cin > >x; while((3)){ (4) cin> >x; } (5) }

正确答案:# include < iostream. h > ofstream four(“ a: xxk1, dat” ); x! = -1 fout < fout. close( );

11. 阅读以下说明和Java码,将应填入(n)处的字名写在对应栏内。 [说明] 编写一个Application,从键盘输入整数n,并计算从1到n的累加和。 import java. io. *; public class Application1 { public static void main(String [] args) { String s = “ “; int n, sum = 0; System. out. println (“计算从1到n 的累加和。”); System. out. print( “请输入n的值:”); try { (1) BufferedReader br = new BufferedReader(isr); (2) }catch(Exception e) { } (3) for(int i=l; i< =n; i++) (4) System. out. println ( “你刚才的输入是:” + n);System. out. println ( “1到n的累加和是:”+ sum); } }

正确答案:InputStreamReader isr = new InputStreamReader( System. in);s = br. readLine( );n = Integer. parseInt(s);return( “姓名”:+ name + “学号:”+ id + “联系电话:” +phone) ;

12. 阅读以下说明和Visual Basic 码,将应填入(n)处的字名写在的对应栏

内 [说明] 这是一个用户名校验程序,如用户名正确,即输出欢迎字样,否则,弹出警告窗并直接退出程序。下面是实现上述功能的程序,请填空。“Option Explicit”此语句的作用:强制显示声明Dim UserName (2) As StringDim Flag As Boolean (1) Private Sub Form _ Load( )UserName (0) = “AA”: UserName (1) = “BB”: UserName(2) = “CC”Flag = FalseinputName = InputBox( “请输入名称:“,”身份确认”“,”)Dim i As IntegerFor i = 0 To False If inputName = UserName(i) Then (2)End If Next i If (3) ThenMsgBox “用户身份确失败!退出应用”, vbOKOnly, “警告” End End If End Sub Private Sub Form_ Paint( )(4) End Sub

正确答案:Dim inputName As StringFlag = TrueFlag = FalsepicShowMsg. Prin t “欢迎您!” + inputName

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务