2018年杭州师范大学861软件专业基础考研真题.pdf



杭  州  师  范  大  学

     2018 年招收攻读硕士研究生入学考试题

 

                考试科目代码:       861       

                考试科目名称:   软件专业基础  

   



说明:考生答题时一律写在答题纸上,否则漏批责任自负。

   



第一部分、C程序设计

 

一、单选题(每题1分,共15分)

 

1. 假设有定义:

int k;

下面程序段编译运行的情况是_____。

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.!(x==0 || y==0) D.x=0 && y=0

 

3. 若定义

char s[2][3]={“ab”, “cd”}, *p=(char *)s;

 那么下列表达式语法正确,并且其值与 s[1][1]相等的表达式(并非一定与其等价)是

A.*(p+4) B.*(s+3) C.*(p+3) D.*s+2

 

4. 对于int x, y;

 语句

 if (x < 0) 

     y = -1; 

 else if (!x) 

     y = 0; 

 else 

     y = 1;

等价于

A.B.C.D.if (x != 0)     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; else    y=-1;y=0; if (x!=0)     if(x>0)         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,a[10],*p=a;

哪个表达式是不正确的

A.a++ B.p++ C.a[0]=k D.*p++=2

 

7. 下列描述不正确的是

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=&x[1]

 

9. 与

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依次指向一个链表中的三个连续结点。

struct   node

    int  data

    struct   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.end

 

12.语句

while(x%3) a++;

中的表达式

x%3

等价于_______.

A.x%3!=0 B.x%3==1 C.x%3==2 D.x%3==0

 

13.当文件打开出现错误时,fopen返回的是?

A.没有返回就导致程序退出了 B.-1 C.1 D.0

 

14.在一个链表中,要把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 a[1][3]; B.int m[][3]={1,2,3,4,5,6};

C.int x[2][]={1,2,4,6}; D.int x[2][2]={1,2,3,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;

    do{

        static int x;

        p(&x, y);

        printf("%d#%d#%d#%d#",x,y,z,w);

    } while(0);

    return 0;

}

 

三、请用C语言写出冒泡排序的程序。(20分)

 

四、请用C语言写出在一个升序的整数数组中折半查找(二分法搜索)的函数。(25分)

 

 

第二部分、数据库原理

 

五、选择题(共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|t∈R∧t∈S}标记的是(        )。

A、R∪S        B、R-S         C、R×S        D、R∩S

5、有一个关系:职工(工号,姓名,岗位、工资),规定工资的范围应该在3000-30000元之间,这一规则在SQL中可以用__________子句约束。

A、whereB、check      C、primary key   D、foreign key

 

六、填空题(共10分,每空格2分)

1.数据库管理系统中,若一个事务因某种原因执行失败,将执行____________操作,以保证数据库的一致性。

2.设关系模式 R(A,B,C,D,E)的函数依赖集为F={AB→C, C→D, D→E},则R的候选码(Candidate Key)可为______________________。

3.SQL查询语言中,如要表达任意多个任意字符,应使用通配符___________。

4.数据库管理系统中,为了保证事务的正确执行,维护数据库的完整性,要求数据库系统维护以下事务特性:________、一致性、隔离性和持续性。

5.关系模式的三种完整性约束分别是______________,参照完整性约束和用户自定义的完整性约束。

 

七、综合应用题(共50分)

1. 数据库概念设计(16分)

一个研究生管理数据库要求提供下述服务:

Ø 可随时查询学校中所有系的信息,包括系的名称、系办公室地址和值班电话。所有系均由系的名称唯一标识。

Ø 可随时查询所有教师的信息,包括其姓名、年龄、职称、所属系以及在该系入职时间。一个系有多名教师,一名教师只能在一个系工作,工作证号具有唯一性。

Ø 可随时查询每个系研究生信息,包括学号、姓名、导师(教师)、专业方向。一名教师可以指导多位研究生,一位研究生的导师只能有一个。

(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分)

 

   



附件
2018年杭州师范大学861软件专业基础考研真题.pdf
pdf
前往下载
附件购买
售价:98 积分
开通会员或更高级的会员可免费下载该文件
您还未登录,请登录后查看资料
登录
免责声明:本站所有的内容均来源于互联网采集或网友投稿提供,不能保证内容的真实性、完整性,仅供个人研究、交流学习使用,不涉及任何商业盈利目的。如果资料有误与官方发布不一致,请与官方最新发布为准,请联系本站管理员予以更改,如果涉及版权等问题,请联系本站管理员予以删除。
维权指引 | 权限说明 | 下载说明 | 内容投诉
考研云分享 » 2018年杭州师范大学861软件专业基础考研真题.pdf
您需要 登录账户 后才能发表评论

发表评论

欢迎 访客 发表评论