2018杭州师范大学软工861软件专业基础真题.doc
杭 州 师 范 大 学 硕 士 研 究 生 入 学 考 试 命 题 纸2018 年 考试科目代码 861 考试科目名称 软件专业基础 (本考试科目共 6 页,第 1 页)杭 州 师 范 大 学2018 年招收攻读硕士研究生入学考试题考试科目代码: 861 考试科目名称: 软件专业基础 说明:考生答题时一律写在答题纸上,否则漏批责任自负。第一部分、C 程序设计一、单选题(每题 1 分,共 15 分)1. 假设有定义:int k;下面程序段编译运行的情况是_。for (k=1; k; k+) printf (“%d “, k);A.能运行, 正常结束 B.以上说法都不对 C.编译错误 D.能运行, 是死循环2.循环语句while (!x那么下列表达式语法正确,并且其值与 s11相等的表达式(并非一定与其等价)是A.*(p+4) B.*(s+3) C.*(p+3) D.*s+24. 对于 int x, y;语句if (x 0) y = 1; else y = -1;if (x=0) y=0; if(x) y=1; else y=-1;y=0; if (x=0) if(x) y=1; elsey=-1;y=0; if (x!=0) if(x0) y=1; else y=-1;5. 要求函数的功能是交换 x 和 y 中的值,且通过正确调用返回交换结果。能正确实现此功能的函数是A. B.void funa(int x , int y)int t;t=x;x=y;y=t;void funa(int *x , int *y)int t = *x;*x = *y;*y = t;C. D.void funa(int *x , int *y)int *p;*p=*x;*x=*y;*y=*p;int funa(int *x , int *y)*x=*y;*y=*x;6. 对于如下定义:int k,a10,*p=a;哪个表达式是不正确的A.a+ B.p+ C.a0=k D.*p+=27. 下列描述不正确的是A.全局变量定义在函数外部 B.静态本地变量分配在全局变量所在的地方C.静态本地变量定义在函数外部 D.本地变量定义在函数内部8.有如下定义:int x=1,2,3,*p=x,y;则y=*p+;相当于_A.y=1, x+ B.y=2, p=x+1 C.y=*p, p+ D.y=2, p=等价的程序段是A. B. C. D.do *s+ = *t+; while ( *t );while ( *t ) *s+ = *t+;do *s = *t+; while ( *s+ );while ( *s ) *s+ = *t+;杭 州 师 范 大 学 硕 士 研 究 生 入 学 考 试 命 题 纸2018 年 考试科目代码 861 考试科目名称 软件专业基础 (本考试科目共 6 页,第 3 页)10. 有以下结构体说明和变量定义,指针 p、q、r 依次指向一个链表中的三个连续结点。struct node int datastruct node *next ; *p, *q, *r;现要将 q 和 r 所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是A.r-next=q; q-next=r-next; p-next=r;B.p-next=r; q-next=r-next; r-next=q;C.q-next=r-next; p-next=r; r-next=q;D.q-next=r-next; r-next=q; p-next=r;11. 有以下程序void WriteStr(char *fn,char *str)FILE *fp;fp=fopen(fn,“w“);fprintf(fp, “%s“, str);fclose(fp);int main()WriteStr(“t1.dat“,“start“);WriteStr(“t1.dat“,“end“);return 0;程序运行后,文件 t1.dat 中的内容是A.start B.endrt C.startend D.end12.语句while(x%3) a+;中的表达式x%3等价于_.A.x%3!=0 B.x%3=1 C.x%3=2 D.x%3=013.当文件打开出现错误时,fopen 返回的是?A.没有返回就导致程序退出了 B.-1 C.1 D.014.在一个链表中,要把 s 所指的一个结点插入到 p 所指的一个结点后面去,正确的语句是:A.s-next=p; p-next=s; B.s-next=p-next; p=s;C.p-next=s; s-next=p; D.s-next=p-next; p-next=s;15.下列数组定义,不正确的是 _.A.int a13; B.int m3=1,2,3,4,5,6;C.int x2=1,2,4,6; D.int x22=1,2,3,4;杭 州 师 范 大 学 硕 士 研 究 生 入 学 考 试 命 题 纸2018 年 考试科目代码 861 考试科目名称 软件专业基础 (本考试科目共 6 页,第 4 页)二、问答题(每小题 3 分,共 15 分)1. 语句if (4/5 3/4) a=1; else a=0;运行后,a 的值是?2. 表达式!”2010-01-27”的值为(以 1 表示真,0 表示假)3. 假设字符变量 ch 中存放有大写英文字母,将其转换为相应的小写英文字母的表达式是(形如 ch=.答案不留任何的空格,不带结尾的分号)4. 下列程序段的输出是_。#define DF(a,b) (a+2*b) int s=5;int k= DF(s+1,s-3);printf(“%d“,k);5.以下代码段的输出是:int x, y, z, w;void p(int *y, int x)static int w;*y+; x+; w = x+*-y;printf(“%d#%d#%d#%d#“,x,*y,z,w);int main(void)int x, y, z, w;x=y=z=w=1;dostatic int x;p(printf(“%d#%d#%d#%d#“,x,y,z,w); while(0);return 0;三、请用 C 语言写出冒泡排序的程序。 (20 分)四、请用 C 语言写出在一个升序的整数数组中折半查找 (二分法搜索)的函数。 (25 分)杭 州 师 范 大 学 硕 士 研 究 生 入 学 考 试 命 题 纸2018 年 考试科目代码 861 考试科目名称 软件专业基础 (本考试科目共 6 页,第 5 页)第二部分、数据库原理五、选择题(共 15 分,每小题 3 分)1、若事务 T 对数据对象 A 加上 S 锁(共享锁)而未加 X 锁(互斥锁) ,则_。 A事务 T 可以读 A 和修改 A,其它事务只能再对 A 加 S 锁,而不能加 X 锁。B事务 T 可以读 A 但不能修改 A,其它事务只能再对 A 加 S 锁,而不能加 X 锁。C事务 T 可以读 A 但不能修改 A,其它事务能对 A 加 S 锁和 X 锁。 D事务 T 可以读 A 和修改 A,其它事务能对 A 加 S 锁和 X 锁2、有一名为“航班运营” 实体,含有航班号、日期、计划起飞时间,计划到达时间,实际起飞时间、实际到达时间、情况摘要等属性,该实体主码可能是_。A航班号 B日期 C航班号+日期 D航班号+情况摘要3、在现代数据库管理系统中,记录数据库事务操作信息的文件是_。 A. 数据文件 B. 索引文件 C. 辅助数据文件 D. 日志文件4设关系 R 和关系 S 具有相同的元数(目) ,且对应的属性取自相同的域。集合t|tRtS标记的是( ) 。A、RS B、R-S C、RS D、RS5、有一个关系:职工(工号,姓名,岗位、工资) ,规定工资的范围应该在 3000-30000 元之间,这一规则在 SQL 中可以用_子句约束。A、whereB、check C、 primary key D、foreign key六、填空题(共 10 分,每空格 2 分)1数据库管理系统中,若一个事务因某种原因执行失败,将执行_操作,以保证数据库的一致性。2设关系模式 R(A,B,C,D,E)的函数依赖集为 F=ABC, CD, DE,则 R 的候选码(Candidate Key)可为_。3SQL 查询语言中,如要表达任意多个任意字符,应使用通配符_。4数据库管理系统中,为了保证事务的正确执行,维护数据库的完整性,要求数据库系统维护以下事务特性:_、一致性、隔离性和持续性。5关系模式的三种完整性约束分别是_,参照完整性约束和用户自定义的完整性约束。七、综合应用题(共 50 分)1. 数据库概念设计(16 分)杭 州 师 范 大 学 硕 士 研 究 生 入 学 考 试 命 题 纸2018 年 考试科目代码 861 考试科目名称 软件专业基础 (本考试科目共 6 页,第 6 页)一个研究生管理数据库要求提供下述服务: 可随时查询学校中所有系的信息,包括系的名称、系办公室地址和值班电话。所有系均由系的名称唯一标识。 可随时查询所有教师的信息,包括其姓名、年龄、职称、所属系以及在该系入职时间。一个系有多名教师,一名教师只能在一个系工作,工作证号具有唯一性。 可随时查询每个系研究生信息,包括学号、姓名、导师(教师) 、专业方向。一名教师可以指导多位研究生,一位研究生的导师只能有一个。(1)根据以上需求,绘制出 E-R 图。 (8 分)(2)根据 E-R 图转换成关系模型,并标明主键和外键。 (8 分)2. 规范化题(10 分)假设有一个加油站的系统中有如下关系 R(加油员 ID,加油员姓名,流水号,金额 )。其中,每一次加油操作都有一个流水号,并由相应金额。每个加油员各自编制流水号,不同加油员的流水号有可能相同。(1)给出上述关系 R 的函数依赖集,以及候选码。(2)说明 R 非 BCNF 模式的理由,并将上述关系 R 分解为 BCNF 模式。3. SQL 应用题(24 分,共 6 小题,每小题 4 分)设有一个医院管理系统,科室(科室号,科室名称,值班电话)医生(工号,姓名,性别,职称,所属科室号,入职时间,状态)病人(病人编号,姓名,性别,出生日期,电话)门诊记录(门诊号,病人编号,工号,日期,主诉,诊断,处理建议)要求用 SQL 语言完成如下题目,字段名称和数据表名请直接使用上面的汉字:(1)创建科室表,注意完整性约束。 (4 分)(2)检索出所有职称为“主任医师”的医生信息。 (4 分)(3)检索出所有在 2017 年 11 月 11 日看过门诊的病人姓名和出生日期。 (4 分)(4)检索出各科室门诊量最大的医生的门诊量,要求返回科室号,门诊量。 (4 分)(5)查询诊断包含“高血压”的病人编号、病人姓名和出生日期。 (4 分)(6)将贾宁医生的状态设置为“退休”。 (4 分)