杭 州 师 范 大 学 2019 年招收攻读硕士研究生考试题 考试科目代码: 849 考试科目名称: 软件专业基础 |
说明:考生答题时一律写在答题纸上,否则漏批责任自负。 |
C程序设计部分(75分) 一、单项选择题(每小题1分,共10分) 1.在ANSI C中以下4组用户定义标识符中,全部合法的一组是( ) A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 2.以下程序的输出结果是( ) #include <stdio.h> main( ) { int a = 1, b = 2, c = 3; printf(“%d”, c>b>a); } A) 2 B) 3.以下正确的叙述是( ) A) 在C语言中,main函数必须位于文件的开头 B) C语言每行中只能写一条语句 C) C语言本身就有输入、输出语句 D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误 4.设有定义:int a,*pa=&a; 以下scanf语句中能正确为变量a读入数据的是( ) A)scanf("%d",pa); B)scanf("%d",a); C)scanf("%d",&pa); D)scanf("%d",*pa); 5.若有以下程序段, int c1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3中的值是( ) A) 0 B) 6.能正确表示逻辑关系:“a≥10或a≤ A) a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0 7.执行下面的程序时,将1、2、3、4分别赋给a、b、c、d,正确的输入是( ) main( ) { int a,b,c,d; scanf(“%d,%d,%d%d”,&a,&b,&c,&d); … } A)1 2 3 4 B)1 2 3,4 C) 1,2,3,4 D) 1,2,3 4 8.有以下程序段 main( ) { int k=0; while(k=1) k++; } 则while循环执行的次数是( ) A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次 9.以下程序的输出结果是( ) #include <stdio.h> main( ) { int a = 5, b = 4, c = 6, d; printf(“%d”,d=a>b?(a>c?a:c): b); } A) 5 B) 10.下面是对数组a的初始化,其中不正确的是( ) A)a[5]={"ABCD"} B)a[5]={'A','B','C','D'} C)a[5]="" D)a[5]="ABCDE" 二、填空题(每空1分,共16分) 1.结构化程序设计中的三种基本结构是 [1] 、 [2] 、 [3] 。 2.C程序的基本组成单位是 [4] 。 3.标识符的第一个字符必须是 [5] 或 [6] 。 4.实常数123.457的规范化指数表示形式是 [7] 。 5.表达式7/2的结果是[8]。表达式7%2的结果是 [9] 。 6.定义一个整型数组a[10],则下标最大的数组元素为 [10] 。 7.在函数的递归调用过程中,要使递归过程不是无限制进行下去,必须具有 [11] 。 8.C语言提供了 [12] 命令用来实现“文件包含”的操作。 9.已知:char c[ ]={“china”};将字符数组c中整个字符串一次输出的语句书写格式为 [13] 。 10.表达式4>3 && 7<5-!0的值为 [14] 。 11.按照变量在函数中作用域不同,可以将变量分为 [15] 和 [16] 。 三、阅读下列程序,写出程序的运行结果(4×3=12分) 1.已知字符A的ACSII码值为65,写出以下语句的输出结果 main( ) { char ch=‘A’; printf("%c,%d",ch,ch+3); } 2. main( ) { int a = 10; printf(“%d ”, ++a); printf(“%d ”, a--); } 3. main( ) { int t=1; for(i=1 ; i<5 ; i++) t=t*i; printf("%d",t); } 4. f(int *a, int b) {b=b+*a; *a=*a+b;} main( ) { int x=2,y=4; int *p; p=&x; f(p,y); printf("%d ,%d",x,y); } 四、程序填空(每空2分,共14分) 1.下列程序段以函数swap( )调用的形式实现两个变量值的互换,请填空完善程序。 swap(int * m,int * n) { int temp; temp=[1]; [2]; *n=[3]; } main( ) { intx,y; scanf(“%d,%d”,&x,&y); swap([4]); printf(%d,%d”,x,y); } 2.下面程序是计算1-3+5-7+…… -99+101的值,请填空完善程序。 main( ) { int i,m,t=1,s=0; for (i=1;i<=101;[5]) {[6]; s=s+m ; [7];} }
五、编程题:(共23分) 1. 编程求1!+2!+3!+……+n!的值,要求分别用递归和非递归两种方法完成该计算。(每种方法5分,共10分) 2. 编写程序输出下列形式的杨辉三角形的前10行。(13分) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 …… 数据库原理部分(75分) 六、选择题(共15分,每小题3分) 1、一个关系是一张二维表,在这张二维表里,每一行对应于关系的一个___________。 A)属性 B)子关系 C)元组 D)分量 2、有一名为“航班运营”实体,含有航班号、日期、计划起飞时间,计划到达时间,实际起飞时间、实际到达时间、值飞飞机编号、情况摘要等属性,该实体主码可能是_________。 A)航班号 B)日期 C)航班号+日期 D)航班号+值飞飞机编号 3、在正常运行的现代数据库管理系统中,两个或者多个事务竞争多个相同的资源时,就可能会发生_______。 A)死锁 B)数据库损坏 C)数据丢失 D)死机 4.设关系R(A,B,C)和关系S(A,B)具有不同的元数(目),以下关系运算__________是不合法的。 A)R÷S B)R-S C)R×S D)ΠA(R) 5.第一范式(1NF)要保证____________。 A)所有属性都是原子的 B)主码是唯一的 C)不允许有外码 D)满足第2范式(2NNF) 七、填空题(共10分,每空格2分) 1.在设计传统的二维表数据库过程中,最常用的数据模型是_______(1)______。 2.设关系模式 R(A,B,C,D,E)的函数依赖集为F={A→C, BC→D, D→E},则R的候选码(Candidate Key)可为_________(2)___________。 3.SQL查询语言中,如要表达任意多个任意字符,应使用通配符______(3)____。 4.数据库管理系统中,为了保证事务的正确执行,维护数据库的完整性,当事务被提交(commit)后就不会再被回滚。这是事务四个属性中的____(4)______。 5.数据库系统中的外键对应关系模式的三种完整性约束中的______(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)检索出所有在2018年11月11日参加答辩的学生姓名和学号。(4分) (4)检索出指导学生论文数最多的老师,要求返回教师工号、姓名和指导的论文数。(4分) (5)查询论文题目包含“机器学习”的学生学号、姓名和答辩日期。(4分) (6)将张三老师的职称设置为“副教授”。(4分) |