2020年杭州师范大学841软件专业基础考研真题.DOC
杭 州 师 范 大 学 硕 士 研 究 生 招 生 考 试 命 题 纸杭 州 师 范 大 学2020 年招收攻读硕士研究生考试题 考试科目代码: 841 考试科目名称: 软件专业基础 说明:考生答题时一律写在答题纸上,否则漏批责任自负。C程序设计部分(75分)一、判断题(每小题1分,共10分)1、在C语言中,标识符是不区分大小写的。( )2、在C语言中,int类型数据可以表示任何整数。( )3、在C语言中,while和do-while循环的主要区别是:do-while循环体可能一次都不执行;而while循环体至少无条件循环一次。( )4、在C语言中,可以给指针变量赋一个整数作为地址值。( )5、在C语言中,向函数传递参数时,实参和形参不可以重名。( )6、设有宏定义:#define F(N) 2*N,则表达式F(2+3)的值是7。( )7、已知:char a7 = a00a00; 则:sizeof(a)的值为7,strlen(a)的值为2。( )8、在C语言中,结构类型成员的类型还可以是结构类型。( )9、若文本文件打开方式为a,而该文件已经存在,则文件中原有数据被清除。( )10、在C语言中,用malloc函数动态分配的内存是在栈中分配的,而不是在堆中分配的。( )二、单项选择题(每小题1分,共20分)1、软件与程序的区别是( )。A. 程序价格便宜、软件价格昂贵B. 程序是用户自己编写的,而软件是由厂家提供的C. 程序是用高级语言编写的,而软件是由机器语言编写的D.软件是程序以及开发、使用和维护所需要的所有文档的总称,而程序只是软件的一部分2、CPU能直接识别的是( )。A. 汇编语言 B. 自然语言 C. 机器语言 D. 高级语言3、若有表达式:x&1,和以下表达式( )是等价的。A. x = 0 B. x != 1 C. x D. x = 14、设x、y、z均为int型变量,则执行以下语句后x、y、z的值为( )。x = 1; y = 0; z = 2; y+ & +z | +x;A. 2、1、2 B. 2、1、3 C. 2、0、3 D. 2、2、35、若有变量声明:int x = 10, y = 4, f; double m; 则执行表达式:f = m = x / y后,f、m的值分别是( )。A. 2, 2.5 B. 3, 2.5 C. 2.5, 2.5 D. 2, 2.06、若定义x为double型变量,则能正确输入x值的语句是( )。A.scanf(%lf, &x);B.scanf(%5.1f, &x);C.scanf(%f, &x);D.scanf(%f, x);7、“if(表达式)”中的“表达式”( )。A.只能是算术表达式B.逻辑表达式、关系表达式和算术表达式都可以C.只能是逻辑表达式D.只能是关系表达式8、switch语句语法中的case分支必须是常量表达式且互不相同,值不能为( )类型。A.浮点型 B.整型 C.枚举型 D.字符型9、以下对枚举类型的声明中,正确的是( )。A. enum a = one, two, three;B. enum a one = 9, two = -1, three;C. enum a = one, two, three;D. enum a one, two, three;10、在while(!e)中,!e等价于( )。A. e = 0 B. e!=0 C. e = 1 D. e != 111、假设有变量声明:intk;下面代码段编译运行的情况是( )。for(k = 1;k;k+)printf(%d,k);A.编译错误 B.能运行,正常结束C.以上说法都不对 D.能运行,是死循环12、在循环语句的循环体中使用break语句的作用是( )。A. 结束本次循环 B. 终止当前整个循环的执行C. 结束switch语句 D. 结束程序的执行13、以下正确的函数头是( )。A. double fun(int x, int y) B. double fun(int x; int y) C. double fun(int x, y) D. double fun(int x, y);14、以下函数原型,错误的是( )。A. intf(inti); B. intf(i); C. intf(int); D. intf(void);15、给定函数原型:voidf(doubledd); 和变量声明:doublea;下列函数调用( )是错误的。A. f(1.0f); B. f(1); C. f(&a); D. f(sizeof(a);16、如果i是变量,而p是指向i的指针,则下列表达式( )可以代替i。A. *&p B. &i C. &*i D. *&i17、若有:charx=abcd;chary=a,b,c,d;以下说法正确的是( )。A. 数组x的长度大于数组y的长度 B. 两个数组的长度相同C. 数组x的长度小于数组y的长度 D. 数组x和数组y的值相同18、结构变量在其生命期里,( )。A. 所有成员一直驻留在内存中 B. 只有一个成员驻留在内存中 C. 部分成员驻留在内存中 D. 没有成员驻留在内存中19、位运算符中,运算符的功能是( )。A. 按位取反 B. 按位与 C. 按位或 D. 按位异或20、如果需要打开一个已经存在的非空文件“file”进行修改,正确的文件打开语句为( )。A. fp = fopen(file, r);B. fp = fopen(file, ab+);C. fp = fopen(file, w+);D. fp = fopen(file, r+);三、填空题(每小题1分,共10分)1、计算机硬件系统由_、运算器、存储器、输入设备、输出设备五部分组成。2、C语言中,表示语句结束的符号是_。3、若有:int x = 3, y = 4, z = 5; 表达式x | y + z & y = z的值为_。4、若变量x已正确定义并赋值,则表达式-10 x a的值为_。10、当文件打开出现错误时,fopen函数的返回值是_。四、程序阅读题(每小题3分,共15分)1、以下程序的输出结果是_。#include int main(void) int x, a = 10, b = 20, ok1 = 5, ok2 = 0;if(a b)if(b != 15)if(!ok1)x = 1;else if(ok2)x = 10;elsex = -1;printf(%dn, x);return 0;2、对于以下递归函数f,调用f(4),其返回值是_。int f(int n) if(n)return f(n-1)+n;elsereturn n;3、以下程序的输出结果是_。#include void add(int *p, int x) (*p)+; x+; printf(%d%d, (*p), x);int main(void) int a = 3; int b = 0; int *p = &a; add(p, b); printf(%d%dn, a, b);4、以下程序的输出结果是_。#include int f(int);int any_function(int (*pf)(int);int main(void) printf(%dn, any_function(f); return 0;int f(int i) return i * i + i - 12;int any_function(int (*pf)(int) int n = 0; while(pf(n) +n; return n;5、以下程序的输出结果是_。#include int main(void) FILE *fp;int i, n=0, k=0;fp = fopen(source.txt, w);for(i = 0; i 5; i+)fprintf(fp, %d, i);fclose(fp);fp = fopen(source.txt, r);fscanf(fp, %d%d, &n, &k);printf(%d,%d, n, k);fclose(fp);return 0;五、程序填空题(每空2分,共10分)1、下面程序的功能是计算1000!的末尾有多少个零。请填空使程序完整、正确。#include int main(void) int i, k, m; for(k = 0, i = 5; i = 1000; i += 5) m = i; while(_) k+; m = m / 5; return 0;2、下面程序的功能是输入一个不包括空格的字符串(少于80个字符),判断字符串是否是回文(即从左往右读和从右往左读一样)。请填空使程序完整、正确。#include #include int main(void) int i, len, flag;char str80;gets(str);len = strlen(str);flag = 1;for(i = 0; i len / 2; +i) if(stri != _) _; break;if(_) printf(Yesn);else printf(Non);return 0;六、程序设计题(共10分)编写一个选择排序函数:void selectionSort(int list, int n);第1个参数list是需要升序排序的整数数组,第2个参数n是数组大小。对数组元素进行升序排序。数据库原理部分(75分)七、选择题(共15分,每小题1分)1. 数据库具有 、最小冗余、较高的数据的独立性和易于扩充等特点。A)数据结构化B)程序标准化 C)数据模块化D)程序结构化2数据库系统中,负责数据库物理结构与逻辑结构的定义与修改的人员是 。A)数据库管理员B)专业用户C)应用程序员D)最终用户3三个模式之间存在映射关系,下列映射关系正确的是 。A)外模式/内模式B)外模式/模式C)模式/模式D)内模式/外模式4要保证数据库的数据独立性,DBMS通过修改的是 。A)三级模式之间的两种映射B)模式与内模式C)模式与外模式D)三层模式5下列关于E-R模型的说法中,正确的是 。A)依赖于计算机硬件和DBMSB)独立于计算机硬件,依赖于DBMSC)独立于计算机硬件和DBMSD)依赖于计算机硬件,独立于DBMS6学生社团可以接纳多名学生参加,但每个学生只能参加一个社团,从社团到学生之间的联系类型是 。A)多对多 B)一对多 C)多对一 D)一对一7现有如下关系:患者(患者编号,患者姓名,性别,出生日期,所在单位)医生(医生编号,医生姓名,所在科室)医疗(患者编号,医生编号,诊断日期,诊断结果)则,医疗关系中的外键有 。A)患者编号 B)医生编号C)患者编号和医生编号 D)没有8.在某个数据库中建立了表person(No,Name,Sex,Birthday),No为表的主码,表中已有的记录如下图所示:NoNameSexBirthday1张丽丽女1967/05/074李方女1970/04/146王安男1982/10/27以下四个语句中能够正确执行的插入操作是 。A)INSERT INTO person VALUES(6,王中,男,1964/03/08)B)INSERT INTO person (Name,Sex) VALUES(王中,男)C)INSERT INTO person VALUES(2,男,王中,1964/03/08)D)INSERT INTO person(No,Sex) VALUES(2,男)9若R1NF,且R中只有一个主属性,则R必然满足 。A)2NFB)3NFC)4NFD)BCNF10在关系数据库中,从关系规范化的意义看,如果关系R中的非主属性对码有传递函数依赖,那么R至多是 。A)1NFB)2NFC)3NFD)BCNF11如果采用关系数据库来实现应用,在数据库设计的_阶段将关系模式进行规范化处理。A)需求分析B)概念设计C)逻辑设计D)物理设计12数据库的转储和恢复属于数据库设计的 。A)逻辑设计B)物理设计C)数据库实施D)数据库的维护13已知事务T1和T2的并发操作序列,如下图所示,并发操作引发的问题是 。A)丢失修改 B)不可重复读C)读”脏”数据 D)幽灵问题14多个事务执行的次序称为 。A)过程B)流程C)调度D)步骤15恢复机制的关键问题是建立冗余数据,最常用的技术是 。A)数据镜像B)数据转储C)登录日志文件D)BC八、填空题(共10分,每空格1分)1数据库系统的三级模式结构保证了数据的独立性,它们分别是 (1) 和 (2) 。2关系数据模型中的关系是二维表,表中的一行称为关系的一个 (3) ,表中的一列称为关系的一个 (4) 。3在关系数据库中,主键值不能为空,也不允许出现重复,这是SQL中的 (5) 完整性约束规则。4写出实现“将查询SC表的权限授予用户U1,并允许该用户将此权限授予其他用户”这一功能的Grant语句: (6) 。5设有关系模式S(A,B,C,D),与关系代数表达式34(S)等价的SQL语句是: (7) 。6多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同,称这种调度策略为 (8) 。7当发生介质故障时,必须使用 (9) 和 (10) 进行数据库恢复。九、综合应用题(共50分) 1.数据库概念设计(16分)某学校有若干系(包含系号、系名、系主任名、电话),每个系有若干学生(包含学号、姓名、年龄)、若干课程(包含课程号、课程名),每个学生选修若干课程,每门课有若干学生选修,学生选修课程有成绩记录,某一门课可以为不同的系开设。今要建立该校学生选修课程的数据库,在以上基础上要求:(1)画出该学校数据库的实体-联系模型E-R图。(8分)(2)把E-R图转变成相应的关系模型,并标明主键和外键。(8分)2.规范化题(10分)假设为考试成绩管理设计了一个关系R(S,SN,C,CN,G,U),其属性的含义依次为考生号、姓名、课程号、课程名、分数和主考学校名称。规定每个学生学习一门课程只有一个分数;一个主考学校主管多门课程的考试,且一门课程只能属于一个主考学校管理;每名考生有唯一的考号,每门课程有唯一的课程号。(1)写出关系模式R基本的函数依赖集及候选键。(4分)(3)关系模式R最高达到第几范式?为什么?(3分)(4)将R规范化为3NF。(3分)3.SQL应用题(24分,共6小题,每小题4分)现有如下关系:职工(职工号,姓名,性别,职务,家庭地址,部门编号)部门(部门编号,部门名称,地址,电话)保健(保健卡编号,职工号,检查身体日期,健康状况)要求用SQL语言完成如下题目,字段名称和数据表名直接使用上面的汉字:(1)查找所有女科长的姓名、检查身体日期和健康状况。(2)查找没有参加任何检查的职工姓名。(3)职工人数最多的部门名称。(4)查找每个部门的男女职工人数,要求列出部门编号、部门名称、性别及人数。(5)删除职工关系表中职工号为“3016”的记录。(6)将职工号为“3061”的职工的健康状况改为“一般”。2020 年 考试科目代码 841 考试科目名称 软件专业基础 (本考试科目共 10页,第10 页)