2020,年招收攻读硕士研究生考试题软件专业基础.docx
2020,年招收攻读硕士研究生考试题软件专业基础 杭 州 师 范 大 学 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、若有表达式:x1,和以下表达式( )是等价的。A. x = 0 B. x != 1 C. x D. x = 1 4、设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、3 5、若有变量声明: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.0 6、若定义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 != 1 11、假设有变量声明:int k; 下面代码段编译运行的状况是( )。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. int f(int i); B. int f(i); C. int f(int); D. int f(void); 15、给定函数原型:void f(double dd); 和变量声明:double a; 下列函数调用( )是错误的。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. *i 17、若有: char x = “abcd“; char y = 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 < 0的值为_。5、假设sizeof(int)的值为4,对于数组:int a36; sizeof(a0)的值为_。6、在C语言中,二维数组在内存中是按_依次存放。7、若有int a32=10,20,30,40,50,60, (*p)2; p=a; 则*(*(p+2)+1)的值为_。8、在C语言中,字符串的结束标记是_。9、若有: struct wc int a; int *b; ; int x = 11,12, y = 31, 32; struct wc z = 100, x, 300, y, *p = z; 则表达式+p->a的值为_。10、当文件打开出现错误时,fopen函数的返回值是_。 四、程序阅读题(每小题3分,共15分) 1、以下程序的输出结果是_。 #include <stdio.h> 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; else x = -1; printf(“%dn“, x); return 0; 2、对于以下递归函数f,调用f(4),其返回值是_。int f(int n) if(n) return f(n-1)+n; else return n; 3、以下程序的输出结果是_。#include <stdio.h> 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 <stdio.h> 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 <stdio.h> 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 <stdio.h> 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 <stdio.h> #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)依靠于计算机硬件和DBMS B)独立于计算机硬件,依靠于DBMS C)独立于计算机硬件和DBMS D)依靠于计算机硬件,独立于DBMS 6学生社团可以接纳多名学生参与,但每个学生只能参与一个社团,从社团到学生之间的联系类型是 。A)多对多 B)一对多 C)多对一 D)一对一 7现有如下关系: 患者(患者编号,患者姓名,性别,诞生日期,所在单位) 医生(医生编号,医生姓名,所在科室) 医疗(患者编号,医生编号,诊断日期,诊断结果) 则,医疗关系中的外键有 。A)患者编号 B)医生编号 C)患者编号和医生编号 D)没有 8.在某个数据库中建立了表person(No,Name,Sex,Birthday),No为表的主码,表中已有的记录如下图所示: No Name Sex Birthday 1 张丽丽 女 1967/05/07 4 李方 女 1970/04/14 6 王安 男 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)2NF B)3NF C)4NF D)BCNF 10在关系数据库中,从关系规范化的意义看,假如关系R中的非主属性对码有传递函数依靠,那么R至多是 。A)1NF B)2NF C)3NF D)BCNF 11假如采纳关系数据库来实现应用,在数据库设计的_阶段将关系模式进行规范化处理。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),与关系代数表达式3<4(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”的职工的健康状况改为“一般”。