1、 福州市思成教育培训学校【专升本考前培训班培训材料】机密启用前 C012007年福建省高职高专升本科入学考试软件工程专业知识试卷(考试时间150分钟,满分300分,共三部分)答题说明:答案卸载答题纸相应的位置上,写在试卷上一律不给分。第一部 C语言程序设计(100分)一、单项选择题(本大题共30小题,每小题2分,共60分)在每小题列出的四个备选项中只有一个符合题目要求,请将正确答案代码填写在答题纸相应的位置上。写在试卷上不得分。1.下列选项中合法的C语言关键字是 A.VARB.charC.integerD.default2.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的
2、值是A.-3B.9C.-12D.63.设x、y、r均为int型变量,则执行完语句:x=y=3;t=+x|+y;后,y的值为A.不定值B.4C.3D.14.有以下程序段int k=0;while(k=1)k+;while循环的次数是A.无限次B.语法错误C.一次也不执行D.执行1次5.以下程序执行后sum的值是main()int I,sum;for(i=1;i6;i+)sum+=I;printf(%dn,sum);A.15B.14C.不确定D.06.若变量a是int类型,并执行了语句:a=A+1.6;,则正确叙述Aa的值是字符CB.a的值是浮点型C.不允许字符型和浮点型相加D.a的值是字符A的A
3、SC值加上17.下列字符中,ASC码值最小的是A.AB.aC.ZD.z8.不能把字符串:Hello!赋给数组b的语句是A.charb10= H, e, l, l, o, ! B.charb10;b=Hello! ;C.char b10;strepy(b, Hello! );D.char b10= Hello! ;9.C语言中运算对象必须是整型的运算符是A%=B./C.=D.=10 or a=10|a=10&a=10|a=1013.有如下程序,运行该程序的输出结果是void main() int y=3,x=3,z=1; printf(%d %dn,(+x,y+),z+2); A.3 4B.4
4、2C.4 3D.3 314.有数组定义int a22=1,2,3;则a11的值为A.1B.2C.3D.015.有如下程序段int a=14,b=15,x;char c=ex=(a&b)&(cB);执行完这段程序后,x的值为A.trueB.falseC.1D.016.有以下程序,程序运行后的输出结果是void main()int I; for(i=0;i3;i+) switch(i) case 0:printf (%d,i);case 2: printf (%d,i);default: printf (%d,i); A.022111B.021021C.000122D.01217.若变量已正确定义
5、并赋值,则下列条件语句中,功能与其他语句不同的是A.if(a) printf(%dn,x);else printf(%dn,y);B.if(a=0) printf(%dn ,y);else printf(%dn,x);C.if(a!=0) printf(%dn,x);else printf(%dn,y);D.if(a=0) printf(%dn,x);else printf(%dn,y);18.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是A.for(i=1;i=5;d+)p*=I;B. for(i=1;i=5;d+)p=1;p*=I;C.i=1;p=1;while(i
6、=5)p*=i;i+;D. i=1;p=1;dop*=i;i+;while(i=5);19.有以下程序,运行后的输出结果是main()int a=7,b=8,*p,*q,*r; p=&a;q+&b; r=p;p=q;q=r; printf(%d, %d, %d, %dn,*p,*q,a,b)A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,720.以下选项中非法的表达式是A.0=x100B.i=j=0C.(char)(65+3)D.x+1=x+121.有定义语句:int ,xy;。若要通过scanf(%d,%d,&x,&y);语句变量x得到数值11,变量y得到数值12,下面
7、四组输入形式,错误的是A.11 12B.11,12C.11, 12D.11, 1222.有以下函数定义void fun(int n,double x)若以下选项中的变量都已经确定并赋值,则对函数fun的正确调用语句是A.fun(int y,double m);B.k=fun(10,12,5);C.fun(x,n)D.void fun(n,x)23.已定义以下函数fun(int *p)return *p该函数的返回值是A.不确定的值B.行参p中存放的值C.行参p所指存储单元中的值D.行参p的地址值24.有以下程序#include#define F(x,y) (x)*(y)void main()i
8、nt a=3,b=4; printf(%dn,F(a+,b+);程序运行后的输出结果是A.12B.15C.16D.2025.有以下程序void main() int a33,*p,I; p=&a00 for(i=0;i9;i+)pi=i+1; printf(%dn,a12);A.3B.6C.9D.226.有以下程序struct STUchar name10; int num; int Score;void main()struct STU s5=YangSan,20041,703;LiSiGuo,20042,580;WangYin,20043,680;SunDan,20044,550;Wang
9、Yin,20045,537;*p5,*t;int I,j;for(i-0;i5;i+)pi=&si;for(i=0;i4;i+)for(j=i+1;jScorepj-Score) t=pi;pi=pj;pj=t;printf(%d %dn,s1,Score,p1-Score);程序运行后的输出结果是A.550550B.680680C.580550D.58068027.有以下程序void sort(int a,int n)int I,j,t;for(i=0;in-1;i+=2)for(j=i+2;jn;j+=2)if(aiaj)t=ai;ai=aj;aj=tvoid main()int aa10
10、=1,2,3,4,5,6,7,8,9,10,i; sort(aa,10); for(i=0;i10;i+)printf(%d, ,aai); printf(n);程序运行后的输出结果是A.1,2,3,4,5,6,7,8,9,10;B.10,9,8,7,6,5,4,3,2,1;C.9,2,7,4,5,6,3,8,1,10;D.1,10,3,8,5,6,7,4,9,2;28.有以下程序void main()int i=0,s=0; for(;) if(i=3|i=5)continue; if(i=6)break; i+; s+=I; printf(%dn,s)A.10B.13C.21D.程序进入死
11、循环29.有以下程序void main()int x8=8,7,6,5,0,0,*s; s=x+3;printf(c%dn,s2);程序执行后的输出结果是A.随机值B.0C.5D.630.设有以下定义和语句int a32=1,2,3,4,5,6,*p3p0=a1;则*(p0+1)所代表的数组元素是A.a01B.a10Ca11D.a12二、程序阅读题 (本大题共4小题,每小题5分,共20分)阅读下列程序,将输出结果写到答题纸的相应位置。写在试卷上不得分31.#includevoid main()char a=I am a boy. ,b20; int i,j; for(i=0,j=0;*(a+i
12、)!=0;i+) if(*(a+i)= )continue;*(b+j)=*(a+i);j=j+1; *(b+j)= 0; printf(n%sn,a); printf(%sn,b)32.#include#define MAX(x,y) (x)(y)?(x):(y)void main()int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf(%dn,t)33.#includevoid main()char a=123456789,*p; int i=0; p=a; while(*p) if(i%2=0)*p*;p+;i+; puts(a);34.#in
13、cludetypedef struct sudent char name10; long sno; float score;STU;void main()STU a=Zhangsan,2001,95; Shangxian,2002,90; Anhua,2003,95,d,*p=&d; d=a; if(strcmp(a.name,b.name)0)d=b; if(strcmp(c.name,d.name)0)d=c; printf(%d%dn,d.sno,p-name);三、完善下列程序 (本大题共3小题,每空2分,共20分)请在答题纸相应的位置上填上正确答案。写在试卷上不得分。35.以下为递归
14、法球n!的函数float fac(int n)float f;if(n0)printf(error! );else if(n=0|n=1)elsereturn( )36.以下函数把b字符串链接到a字符串的后面,并返回操作后a字符串的长度streen(char a.char b)int num=0,n=0; while(*(a+num)!= )num+; while(bn)*(a+num)=bn;num+; ; return( )37.从键盘上输入0-9十个数字组成的字符串存入数组S中,然后求数组S中0-9的个数分别是多少,最后输出。void fun(char *str,int *num)int
15、 I;while( )if (*str=9& ) str+;void main()char s81; static int num10; int i; printf(nPlease enter 1line strings(09):n); scanf(%s, ) fun (s,num); for(i=0;i10;i+) printf(%d:%3dn,I,num1);第二部分 数据机构(共100分)一、单项选择题 (本大题共12小题,每小题2分,共24分)在每小题列出的四个备选项中只有一个符合题目要求,请将正确答案代码填写在答题纸相应的位置上。写在试卷上不得分。1.在待排序记录已基本有序的前提下,
16、下述排序方法中效率最高的是A.直接插入排序B.简单选择排序C.快速排序D.归并排序2.与数据的存储结构无关的术语是A.栈B.必散列表C.线索二叉树D.双向链表3.有个元素6,5,4,3,2,1按排序进栈,下列不合法的出栈序列是A.5,4,3,6,1,2B.4,5,3,1,2,6C.3,4,6,5,2,1D.2,3,4,1,5,64.排序存储方式的优点是A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示5.对于只在表的首、尾继续拧插入操作的线性表,宜采用的存储结构为A.顺序表B.用头指针表示的单循环链表C.用尾指针表示的单循环链表D.单链表6.对包含n个元素的散
17、列表进行查找,平均查找长度A.为O(logn)B.为O(n)C.为O(nlogn)D.不直接依赖于n7.具有对称邻接矩阵的图是A.有向图B.无向图C.AOV图D.AOE图8.设表(a1,a2,a3,,a32)中的元素已经按递增顺序排好序,用二分法检索与一个给定的值k相等的元素,若a1ka2,则在检索过程中比较的次数是A.3B.4C.5D.69具有3个结点的不同二叉树的数目是A.2B.3C.4D.510.对二叉树的结点从1开始编号,要求每个结点的编号大约其左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号大于其有孩子的编号,则可采用的编号方法A.先序遍历B.中序遍历C.后续遍历D.层次遍历1
18、1.在长度为n的顺序表的第i(1in+1)个位置上插入一个元素,需要移动元素的次数A.n-i+1B.n-1C.iD.i-112.对于一个无向图,下列说法正确的是A.每个顶点的入度大于出度B.每个顶点的度等于其入度与出度之和C.无向图的邻接矩阵一定是对称矩阵D.有向图中所有顶点的入度之和大约所有顶点的出度之和二、填空题 (本大题共10小题,每空2分,共22分)请在答题纸相应的位置上填上正确答案。写在试卷上不得分。13.设一哈希表表长M为100,用除余法构造哈希函数,即H(K)%P,其中K是关键字,PM,为使函数具有较好性能,P应选14.N个结点的二叉树采用二叉链表存放,共有空指针域个数为15.若
19、一个算法中的语句频度之和为T(n)=3720n+4nlogn,则算法的时间复杂度为16.已知有向图的邻接矩阵,要计算第1号顶点的入度,计算方法是将 累加。17.深度为6(根深度为1)的二叉树至多有 个结点。18.一棵具有n个叶子结点的哈夫曼树中,结点总数为19.设单链表结点的定义如下:struce nodeint data;struct node*next;*p,*s,*t;要在一个单链表中p所指结点之后插入一个子链表,子链表第一个结点的地址为s,子链表最后一个结点的地址为t,则应执行的操作: 和20.设单链表结点的定义如19题,现有一个含头结点的单链表,头指针为head,指向头结点,则判断该
20、单链表是否为空表的条件为21.n个顶点的联通无向图至少有 条边22.在顺序存储结构的线性表中插入一个元素,平均需要移动个元素三、应用题 (本大题共4小题,每小题8分,共32分)请在答题纸相应的位置上填上正确答案。写在试卷上不得分。23.已知有向图如图所示;(1)写出顶点B的度(2分);(2)写出从顶点D开始的两个广度优先搜索序列(2分)(3)画出该图的邻接表(4分)24.已知二叉树的中序序列为DBGEAFC,后序列为DGEBFCA,画出对应的叉树6335191625.如图表示一个地区的通讯网,边表示城市间的通讯线路,边上的权值表示架设线路花费的代价,请画出该图的最小支撑树,并计算最小支撑树的权
21、26.设一个闭散列表具有10个桶,散列函数H(x)=x%7,若元素输入顺序为:50,42,85,22,76,19,34,68,解决冲突用线性重新散列技术,要求画出构造好的散列表。四、算法设计(本大题共2小题,第25小题10分,第26小题12分,共22分)请在答题纸相应的位置上填下正确的答案。写在试卷上不得分。27.二叉搜索树T用二叉链表存储结构表示,其中各元素的值均不相同。编写算法,按递减顺序打印T中各元素的值。树结点结构定义如下:typedef int TreeItemtypedef struct btnode*btlink;typedef struct btnode;TreeItem da
22、ta;btlink left,right;BTNODE;28.阅读下面程序,其功能是调整线性表中的元素,将所有奇数放在表的左边,将所有偶数放在表的右边。请填空完成该程序(每空1分,共12分)#define MAXSIZE 100typedef int ElemType;typedef struct;ElemType elemMAXSIZE;/*用于保存线性表各元素值*/int last;/*用于保存elem数组末元素下标*/SeqList;void AdjustSqList(SqList*L)ElemType temp;int i=0,j= (1) ;while(ielem (2)%2!=0&
23、 (3) )i+;while(L-elem (4)%2=0& (5) )j+;if(6)break;temp=L-elemi;L-elem i=(7) ;L-elem j=(8) ;void main()SeqList(9);int r,I;sq=( (10) )malloc (sizeof(SeqList);printf(请输入线性表的长度: );scanf(%d,&r);sq-last= (11);printf(请输入线性表的各元素值:n);for(i=0;i;i+)scanf (%d,& (12) );AdjustSqlist(sq);第三部分 关系数据库与SQL语言(共100分)一、单
24、项选择题 (本大题共20小题,每小题2分,共40分)在每小题列出的四个备选项中只有一个符合题目要求,请将正确答案代码填写在答题纸相应的位置上。写在试卷上不得分。1. 数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)三者的关系是A.DBS包括DB和DBMSB.DBMS包括DB和DBSC.DB包括DBS和DBMSD.DBS就是DBMS,包括DB2.在关系理论中称为”元组”的概念,在关系数据库中称为A.实体B.属性C.行D.字段3.在关系数据库中,能对数据进行查询、插入、修改和删除操作的功能称为A.数据定义功能B.数据管理功能C.数据控制功能D.数据操纵功能4.下列可用来实现表结构修
25、改的命令是A.ALTERB.CREATEC.UPDATED.DROP5.关系数据库中,用户共同视图是数据库三级模式结构中的A.模式B.概念模式C,外模式D.存储模式6.在一个关系中,有可能用来唯一标识一个元组的对象,我们称这个对象为A.主码B.候选码C.主属性D.外码7.下列说法正确的是A.几个域做笛卡尔积运算的结果是一个集合,几个关系做广义笛卡尔积运算的结果不是一个集合B. 几个域做笛卡尔积运算的结果不是一个集合,几个关系做广义笛卡尔积运算的结果是一个集合C. 几个域做笛卡尔积运算,运算的结果是一个新的域D. 几个关系做广义笛卡尔积运算,运算的结果是一个新的域8.数据字典中不包括的内容有A.
26、数据项B.数据结构C.数据流D.数据操纵9.数据的结构是以一个”二维表框架”组成的集合,这样的模型是A.关系模型B.层次模型C.网状模型D.实体联系模型10.关系数据库对数据的检索操作不包括A.投影B.连接C.比较D.选择11.关系R中的所有属性都是主属性,则R的最高范式是A.INFB.2NFC.3NFD.无法确定12.如下表所示的关系T,T是R和S做运算的结果,则R和S做的运算可能是RARBRCSASBSCabcabcbacabccababcabccabbaccabcabcabA.RSB.R-SC.RSD.RS13.把局部E-R图合并成全局E-R图可能出现冲突,下列不属于合并冲突的是A.属性
27、冲突B.语法冲突C.结构冲突D.命名冲突14.在E-R模型中,用来表示属性的图形是A.椭圆形B.平行四边形C.菱形D.矩形15.下列有关视图的说法,正确的是A.视图是虚拟表,它可以用来存储数据B.视图中所使用的表被删除,则此视图无法查询到数据C.视图可以用来查询数据,而且一定可以通过视图修改相应表数据D.视图只能用来查询数据,而无法通过视图修改相应表数据16.有一SQL语句”CRANT SELECT ON student TO User1 WITH CRANT OPTION”,其中”WITH CRANT OPTION”的作用是A.将系统权限授予User1B.允许User1将权限再授予其他用户C
28、.暂时取消User1的所有权限D.将超级管理员的权限授予User117.下列对于Delete命令的描述正确的是A.可以用来删除关系B.可以用来删除数据库模式C.Delete和DROP等价D.可以用来删除表数据18.下列函数依赖关系正确的是A.若XY,WYZ,则XWZB.若XY,则XYC.若XYZ,XY,则YZD.若XY=,则XY19.在一个关系R中,下列说法正确的是A.主属性只有一个B.主属性的个数一定和候选码个数相同C.主属性可以有多个D.主属性的个数一定和主码个数相同20.同一个关系模式的任意两个元组值A.必须完全相同B.主属性列必须相同C.不可完全相同D.非主属性列必须相同二、填空题 (
29、本大题共9小题,每空2分,共20分)请在答题纸相应的位置上填上正确答案。写在试卷上不得分。21.数据模型是现实世界数据特征的抽象,数据模型通常由数据结构、数据的约束条件三要素组成。22.在数据库设计的各个阶段中,关系模式设计是在 阶段完成的23.设关系R和S的元数分别是2和5,关系T是R与S广义笛卡尔积的结果,即T=RS,则T的元数是24.数据库系统的三级模式结构中,将模式和内模式分开,保证了数据的25.自然连续是在广义笛卡尔积中选出同名属性上符合相等条件的元组,再进行,并且去掉重复的同名,组成新的关系。26.在关系模式R(姓名、年龄、职位、出生日期)中,最有可能作为主关键字的属性是27.若属
30、性A是关系R的主属性,则属性A不能取空值,这是完整性的体现。28.在非关系模型中对数据的操作,一次操作内容是一次记录:在关系模型中对数据的操作,一次操作内容是一29.若要创建一个唯一索引,需要使用关键字 来表示唯一。三、根据题意,写出实现以下查询的SQL语句(本大题共25分)请在答题纸相应的位置上填上正确答案。写在试卷上不得分。30.某图书馆的数据库有如下关系:读者R、书籍B、出版社P;读者借阅书籍产生新的关系“借阅RB” ;一个出版社可以出版多本书籍,一本书籍只能由一个出版社出版;关系模式如下:R(Rid,Rname,RIDcard,Rphone),属性分别表示:读者编号、读者姓名、读者身份
31、证号、读者电话;B(Bid,Bname,Bauthor,BpublishDate,Bprice,Pid),属性分别表示:书籍编号、书籍名称、作者、出版日期、书籍价格、出版社编号;P(Pid,Pname),属性分别表示:出版社编号、出版社名称;RB(RBid,Rid,RBborrowDate,RBstate),属性分别表示:借阅编号、读者编号、书籍编号、借阅日期、借阅状态;(1) 为了提高查询速度,需要在RB表上通过Rid和Bid两个字段建立一个索引,索引名1X_RB,请写出创建此索引的SQL语句(4分)(2) 为了方便查询出读者、书籍和借阅表的数据,请通过R、B和RB三个关系做内连接操作,创建
32、一个视图,视图名为VIEW_RB,请写出创建此视图的SQL语句(4分)(3) 通过VIEW_RB查询出被借阅次数超过(包括)100次的书籍名称。(在书籍B中Bname属性值是唯一的)(4分)(4) 查询出有借阅过书籍编号为B001号和B002号两本书的读者姓名和读者电话。(4分)(5) 查询出书籍名称中包含有数据库三个字符的所有书籍名称和作者。(3分)(6) 请把读者编号为R012的读者电话修改为0123-12345678。(3分)(7) 查询出福建出版社出版的价格最贵的3本书的书籍名称和书籍价格。(3分)四、计算题 (本大题共2小题,第31题6分,第32题9分,共15分)请在答题纸相应的位置
33、上填上正确答案。写在试卷上不得分。31.设有关系R(V,W,X,Y,Z),各个属性的函数依赖集合有F=WXY,ZV,XZ,问:(1) 关系R的候选码是什么?(1分)(2) 关系R的范式等级是什么?(1分)(3) 关系R时候达到3NF?如果没有,请把关系R进行分解,使分解后的关系达到3NF,写出分解后的关系。(4分)32.使用关系代数描述下列查询:(关系数据库模式同第30题)(1) 查询借阅状态为借出的书籍名称。(3分)(2) 查询出张三所借阅过的所有书籍名称。(3分)(3) 查询出有借阅过书籍编号为B003,但没有借阅过书籍编号为B009书籍的读者姓名和读者电话。(3分)1. A. 10B.
34、25C. 55D. 752. 语句:printf(“%-8.4d ”, -36); 执行时的输出结果是(表示空格)_。A. -036B. -036C. -036D. -036 3. 如下程序段的输出结果是_。main( ) int a10 = 34 , 22 , 12 , 66 , 8 , 33 , 22 , 338 , 56 , 99; int i , x = 0; for(i = 1 ; i 10 ; i+) if(ai ax) x = i; printf(“%d” , ax);A. 8B. 34C. 99D. 3384. 如下程序段的输出结果是_。main( ) char str = s
35、 , t , u , d , e , n , t , 0; char *q = str ; while(*q != 0) q+; printf(“%d” , q - str) ;A. 5B. 6C. 7D. 85. 如下程序段的输出结果是_。#define n 5struct student int no; float score; main( ) struct student stun = 1,12.5,2,55.5,3,90.5,4,78.0,5,34.0; int i; float a = 0 , b ; for(i = 0 ; i n ; i+) a += stui.score ; b
36、 = a / n ; printf(“%08.4f” , b) ;A. 0054.1000B. 054.1000C. 0054.1D. 54.10000二、程序阅读题(本大题共4小题,每小题5分,共20分)阅读下列程序,请将运行时输出的结果写在答题纸相应的位置上。6. /*程序段中表示空格*/#include void main( ) char str1 = “goodmorning!” , str220 ; char *p , *q; for( p = str1 ; *p != 0 ; p+) ; for(q = str2 ; -p = str1 ; q+) *q = *p ; *q = 0
37、; printf(“%s” , str2) ;7. #include #define n 10void de(int a , int x , int *m) int i = x + 1 ; for( ; i = *m ; i+) ai-1 = ai; *m = *m - 1;void main( ) static int an = 32 , 12 , 12 , 56 , 78 , 12 , 78 , 5 , 32 , 12; int i , j , x , m = n-1 ; for(i = 0 ; i = m ; i+) x = ai ; for(j = i+1 ; j = m ; j+) if(aj = x) de(a , j , &m) ; for(i = 0 ; i = m ; i+) printf(“%d,” , ai) ;8. #incl