1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 3及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读以下说明,回答问题 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),请指出该关系模式的候选键。 2 假设上述关系模
2、式 RS上存在函数依赖: A1A3 。上述关系模式 RS最高满足第几范式 (在 1NF BCNF 之内 )?为什么 ? 3 如果将上述应用的数据库设计为如下三个关系模式: R1(A#, A1, A2, A3) R2(B#, B1, B2) R3(A#, B#, D1) 那么关系模式 R2是否一定满足第 3范式 ?为什么 ? 4 阅读以下说明,回答问题 1 3,将解答填入对应的解答栏内。 说明 下图是有关学生 (student)和学习 (study)信息的对象关联图。4 试解释这个对象联系图。 5 试用 ORDB的定义语言,定义这个数据库。 6 使用 ORDB的查询语言,分别写出下列查询的 SE
3、LECT语句; 1)检索每个学生的学习课程和成绩。 2)检索至少有一门课程的求学地与籍贯在同一城市的学生的学号和姓名。 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 (tagtop3 = =1) (3) pr
4、int (“%d“, p- data); if(top 0) (4) tag top = 1; while (p! = NULL exit (1); int x; cin x; while(3) (4) cin x; (5) 11 阅读以下说明和 Java码,将应填入 (n)处的字名写在对应栏内。 说明 编写一个 Application,从键盘输 入整数 n,并计算从 1到 n的累加和。 import java. io. *; public class Application1 public static void main(String args) String s = “ “; int n
5、, 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); 12 阅读以下说明和 Visual Bas
6、ic 码,将应填入 (n)处的字名写在的对应栏内 说明 这是一个用户名校验程序,如用户名正确,即输出欢迎字样,否则,弹出警告窗并直接退出程序。下面是实现上述功能的程序,请填空。 “Option Explicit”此语句的作用 :强制显示声明 Dim UserName (2) As String Dim Flag As Boolean (1) Private Sub Form _ Load( ) UserName (0) = “AA“: UserName (1) = “BB“: UserName(2) = “CC“ Flag = False inputName = InputBox( “请输入名
7、称: “,”身份确认 ”“,”) Dim i As Integer For i = 0 To False If inputName = UserName(i) Then (2) End If Next i If (3) Then MsgBox “用户身份确失败 !退出应用 ”, vbOKOnly, “警告 ” End End If End Sub Private Sub Form_ Paint( ) (4) End Sub 软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 3答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【正确答案】 (A#, B#) 2 【正确答案】
8、 最高满足 INF 3 【正确答案】 满足第三范式 【试题解析】 根据候选关键字的定义:设关系模式 R (A1, A2, , An), F是R上的函数依赖集。 X是 R的一个子集, xA1A2An 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
9、#, A1, A2, A3), (B#)+=(B#, B1,B2)。因此, (A#, B#)是 关系模式贴的候选键。 假设第二问的关系模式 RS上存在函数依赖: A1A3 ,则贴只满足 1NF,不满足2NF,因为存在非主属性 A3对键 (A#, B#)的传递依鞍,而且存在非主属性对键的部分函数依赖。 在第三问中,因为 R2中有两个非主属性 B1和 B2,候选键是 B#,既不存在非属性对候选键的部分函数依赖,也不存在非主属性对候选键的传递函数依赖。 4 【正确答案】 对象 student 包含身份证号,姓名,籍贯和学习 (studies)等属性,对象 study 包含课程名,成绩,求学地,大学以
10、及学生 (student )等属 性。对象student 和 study 之间联系为 1:N。 基本表的创建,修改和撤销语句语法为: CREATE TABLE SQL 模式名 . 基本表名 (列名类型, 完整性约束, ) ; 其中,完整性约束包括主键子句,检查子句和外键子句。 5 【正确答案】 CREATETYPE MyString char vaiying; CREATE TABLE student( sno integer, shame MyString, city MyString studies setoff( ref (study); CREATETABLE study(cours
11、6 【正确答案】 1) SELECT A. sname, B. coursename, B. grade FROM student as A, A. studies as B; 2) SELECT A. sno, A. sname FROM student as A, A. student as B WHERE A. ciy = B. ciy 7 【正确答案】 (1) stack top=p; (2) p=stack top; (3) top-; (4) p=p-right; 【试题解析】 根据后序遍历二叉树的递归定义,转换成非递归函数时采用一个栈保存返回的结点,先扫描根结点的所有左结点并入栈
12、,出栈一个结点,然后扫描该结点的右结点并入栈,再扫描该右结点的所有左结点并入栈, 当一个结点的左右子树均访问后再访问该结点,如此这样,直到栈空为止。在访问根结点的右子树后,当指针 p指向右子树树根时,必须记下根结点的位置,以便在遍历右子树之后正确返回。这里采用两个栈 stack 和 tag,并用一个共同的栈顶指针,并用一个共同的栈顶指针,一个存放指针值,一个存放左右子树标志 (0为左子树, 1为右子树 )。退栈时在退出结点指针的同时去判断是遍历左子树返回的还是遍历右子树返回的,以决定下一步是继续遍历右子树还是访问根结点。 8 【正确答案】 根据风险决策树可知,两个游戏的总和都是 0.5元,因此
13、,每玩 一次游戏,平均获利 50分,选择哪个游戏都是一样的。【试题解析】 风险是发生不可预见的事件的可能性。将各种风险进行可视化的技术是建立风险决策树。顶层的分支根据可供选择的风险而分开。下一层的分支依据事件发生的概率。每个叶结点都有某一事件的风险揭露。顶层分支下的所有叶结点的风险揭露的总和为该选择的总风险揭露。 9 【正确答案】 由上面的风险决策树可知,两个游戏都会损失你的钱。在游戏 A中,平均损失 0.75元,而在游戏 B中平均损失 1.50元。二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题 中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 10
14、 【正确答案】 # include ofstream four(“ a: xxk1, dat“ ); x! = -1 fout fout. close( ); 11 【正确答案】 InputStreamReader isr = new InputStreamReader( System. in); s = br. readLine( ); n = Integer. parseInt(s); return( “姓名 ”:+ name + “学号: ”+ id + “联系电话: ” +phone) ; 12 【正确答案】 Dim inputName As String Flag = True Flag = False picShowMsg. Prin t “欢迎您 !” + inputName