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