桂林电子科技大学 2014 年硕士研究生入学考试复试试卷
考试科目代码: 考试科目名称:数据库系统原理+程序设计基础
请注意:答案必须写在答题纸上(写在试卷上无效)。
数据库系统原理部分
一、简答题(共 2 个小题,每小题 5 分,共 10 分)
1、并发调度正确性的标准是什么?如何保证并发调度的正确性?
2、设有如下图所示的关系 R 和 S,计算:R1=σA≥3(R⋈S)
R S
A
B
1
4
2
3
2
a
b
c
e
e
C
2
2
3
3
3
B
b
c
e
C
2
3
3
二、SQL(共 4 小题,每小题 5 分,共 20 分)
已知学生-课程数据库中包括以下三个表:
学生表:Student(Sno, Sname, Ssex, Sage, Sdept)
课程表:Course(Cno, Cname, Cpno, Ccredit)
学生选课表:SC(Sno, Cno, Grade)
其中:Sno 表示学生学号, Sname 表示学生姓名,Ssex 表示学生性别, Sage 表示学生年龄, Sdept 表示
学生所在系, Cno 表示课程号, Cname 表示课程名称, Cpno 表示先行课号, Ccredit 表示该课程的学分,
Grade 表示考试成绩。 表示主码, 表示外码。
用 SQL 语言完成如下查询:(20 分)
(1) 用 SQL 语言建立 SC 表,要求满足以下完整性约束条件的定义:
① 定义关系的主码,② 定义参照完整性,③100Grade 0。
(2) 查询年龄大于 19 岁的‘计算机系’的学生学号和姓名。
(3) 将所有女生的成绩加上 10 分。
(4) 请为‘计算机系’的学生建立一个视图 E_W,属性包括学号 Sno,姓名 Sname, 所选课程号 Cno,
成绩 Grade。
三、分析题(共 5 个问题,每个问题 2 分,共 10 分)
假设某差旅管理数据库中有一关系模式 R 如下:
R (姓名,身份证号,性别,出差地名,出差日期,出差费用)
如果规定:一个身份证号能证明一个人,一个身份证号上标有一个性别,同一个人可以多次去同一
个地方出差。
试回答下列问题:
(1) 根据上述规定,写出模式 R 的基本函数依赖集 F。
(2) 求(身份证号)关于 F 的闭包。
(3) 求出 R 的候选码。
(4) R 最高达到了第几范式? 为什么?。
四、设计题(共 2 小题,每小题 5 分,共 10 分)
设某单位车辆管理数据库中有 3 个实体集,分别为部门,其属性有部门号,部门名,部门电话;职
工,其属性有职工号,姓名,性别,年龄;车辆,其属性有车辆号,车辆类型,价格。每个部门可以聘
用多名职工,每名职工只受聘于一个部门,每个部门聘用每名职工时保存聘用期限和聘用日期。每个部
门可以使用多车,每辆车可以供在不同的部门使用,每个部门使用每辆车都有一个用车费用。每辆车由
一名职工负责,每个职工最多负责一辆车。
请根据上面的描述完成如下题目:
(1) 根据需求分析,用 E-R 图画出该公司的部门、职工、车辆的概念模型,要求给出实体、联系的属性。
(5 分)
(2) 将(1)中得到的概念模型转换为关系模式集合,并注明主码,外码(若有)。(5 分)
程序设计部分
一、阅读程序给出执行结果(共 20 分,每题 4 分)。
1、下列程序运行后的输出结果是______ 。
#include
main()
{ int i,j,k=0;
for(j=10;j<=40;j++)
{ if(k%5==0)
printf(“\n”);
for(i=2;i=j-1)
{ printf(“%d\t”,j);
k++;
}
}
}
2、下列程序运行后的输出结果是______ 。
#include
int x=1;
main()
{ int i=5;
fun(i);
printf(“%d,%d\n”,i,x);
}
fun(m)
int m;
{ m+=x;
x+=m;
{ char x=‘A’;
printf(“%d\n”,x);
}
printf(“%d,%d\n”,m,x);
}
请注意:答案必须写在答题纸上(写在试卷上无效)。
3、下列程序运行后,若从键盘输入 ABC!四个字符后,程序输出是______ 。
#include
main()
{ void receiv();
receiv();
}
void receiv()
{ char c;
c=getchar();
putchar(c);
if(c!=‘!’) receiv();
putchar(c);
}
4、以下程序执行后输出结果是___________。
int f(int *x,int *y)
{ int t;
t=*x; *x=*y; *y=t;
}
main()
{ int a=7,b=8,*p,*q,*r;
p=&a; q=&b;
printf("%d,%d,",*p,*q);
f(p,q);
printf("%d,%d\n",*p,*q);
}
5、以下程序的运行结果是 __________。
#include "stdio.h"
func(int a, int b)
{ static int m=0, i=2;
i+=m+1;
m=i+a+b;
return m;
}
main( )
{ int k=4, m=1, p;
p=func(k,m); printf("%d,",p);
p=func(k,m); printf("%d \n",p);
}
请注意:答案必须写在答题纸上(写在试卷上无效)。
二、编写 C 语言程序完成以下功能(共 30 分,每题 10 分)。
1、输入某年某月某日,判断这一天是这一年的第几天? (10 分)
2、某人用 100 元钱去买 100 活鸡,公鸡 5 元 1 只,母鸡 3 元 1 只,小鸡 1 元 3 只,问三种鸡都要买到,
如何买才能使钱不超不剩?(10 分)
3、输入一个以回车结束的字符串(不超过 10 个字符),将其中的数字字符取出组成一个整数后输出,其余
字符组成一个新的字符串输出。例如:输入“5ab3c4d8h2”,则输出整数 53482 和字符串“abcdh”。 (10
分)
请注意:答案必须写在答题纸上(写在试卷上无效)。