1、2021年 软件工程 计算机科与技* 专业知识试卷 真题(考试时间150分钟,满分300分,共三部分)第一部分C语言程序设计一、单项选择题(本大题共30小题,每小题2分,共60分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将正确答案代码填写在答题纸相应位置上。1下列选项中,合法的C语言标识符是 。 Amyname B$234 Cmy name D23b2己知:int x=5;执行完printf(“d”,+x);后,输出的结果是 。 A4 B5 C6 D不确定3己知:int X=5,y=3;则逻辑表达式(x-y)&(y-3)的值为 。 A7 B2 C1 D04己知:int a =3
2、,b=6,c=8;则执行完语句:a=ab?a:(b0) X*=2; Y=3; printf(“d,d”,X,Y); A8,0 B160 C. 32,0 D64,09. 如下选项中正确的数组定义是 A#define m 10; static int am=3,4,5,6; Bstatic int a2=3,4,5,6;Cstatic int a10=3,4,5,6); Dint m=4;static int am=3,4,5,6;10执行程序段:char str12;scanf(“s”,str);如果输入如下字符串(其中口表示空格): Whats口your口name? 则str的值是 AWhat
3、s BWhats口 CWhats口your DWhats口your口name?11如下程序段的运行结果是 。 main() int i=5,sum=100; do(sum=sum+(-i);) while(i=0); printf(“d”sum); A100 B109 C105 D11012如下程序段的运行结果是 。 main() int i; for(i=1;iname=ddd;p-score=660;p-age=15; DP=&stul;pname=“ddd”;pscore=660;page=15;22下面程序段中语法正确的是 。 Aint mm(int x,int y) int x,y;
4、return x+y; Bchar str10;scanf(“s”,&str);Cint i,a10;for(i=0;i=10;i+) scanf(“d”,ai); Dint i,a10,*p; for(i=0,p=a;p0) C!(a= =1)D(a= =1)24若变量已经正确定义,要求程序段完成1到100的累加,下列选项中不能完成此功能的程序段是 。 Afor(i=1,sum=0;i=100;i+)sum=sum+i; Bi=1;suln=0;while(i+=100)sum=sum+i; Cfor(i=1;i=100;i+)sum=0;sum=sum+i Di=1;sum=0;dosim
5、=sum+i;while(+i:100);25己知int k;且k已经正确赋值,则下列表达式中存在语法错误的是 A2k6 B(k6)+ Ck2 Dk= =126如下程序段的输出结果是 。 main() int i,j,a=0; for(i=1;i=5;i+) for(j=i;j=5;j+) a=a+j; printf(“d”,a); A10 B 25 0 C55 D7527语句:printf(“-84d”,-36);执行时的输出结果是(口表示空格) 。 A-036口口口口 B-036口口口口口 C口口口口-036 D口口口口口-03628如下程序段的输出结果是 。 main() int a10
6、=34,22,12,66,8,33,22,338,56,99); int i,x=0; for(i=1;i10;i+) if(aiax) x=i; printf(“d”,ax); A8 B34 C99 D33829如下程序段的输出结果是 。 main() char str =(S,t,u,d,e,n,t,0); Char*q=str; while(*q!=0)q+; printf(“d”,q-str); A5 B6 C7 D830如下程序段的输出结果是 。 #define n 5 struct student int no; float score; main() struct student
7、 stun=1,12,2,555,3,905,4,78.0,5,34.0; int i; float a=0,b; for(i=0;in;i+) a+=stui.score; b=an;printf(“084f”,b);A00541000 B0541000 C00541 D5410000二、程序阅读题(本大题共4小题,每小题5分,共20分)阅读下列程序,请将运行时输出的结果写在答题纸相应的位置上。31. *程序段中口表示空格*#includevoid main()char strl=“good口morning!”,str220; char*p,*q; for(p=strl;*p!=0;p+);
8、 for(q=str2;-p=strl;q+)*q=*p; *q=0; printf(“s”,str2);32. #include#define n 10 void 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+l;j=m;j+) if(aj= =X) de(a,j,&m); for(i=0;i=m;i+)prin
9、tf(“d,”,ai);33. #includevoid ch(int *a,int *b)int c; c=*a;*a=*b;*b=c;void main()static int a10=32,5,1 8,56,98,52,78,15,132,1 12); int x=0,y=1,i; if(axay)ch(&x,&y); for(i=2;i10;i+) if(aiay)y=i; ch(&ax,&ay); for(i=0;i10;i+)printf(“d,”,ai);34. #includevoid main()char str =“0342201411”; static int a10;
10、int i; char *p; for(i=0;i10;i+) ai=0; for(p=str;*p !=0;p+) i=*p-0; ai+; for(i=0;i10;i+) printf(“d,”,ai);三、完善下列程序(本大题共2小题,每空4分,共20分) 请将答案写在答题纸相应的位置上。35下面程序求一个二维矩阵的最大值。#include#define m 3#define n 4int findmax(int an)int i,j,max=a00;for(i=0;im; )for(j=0;jmax) max=aij; ;void main() int i,j,max, ;for(i=
11、0;irn;i+) for(j=0;Jn;j+) scanf(“d”,&aij);max=findmax(a);printf(“d”max);36下面程序找出100200之间的全部素数。#include#includevoid main()int nq,k,i; for(m=101;m=200;m=m+2) k=sqrt(m);for(i=2;ik) printf(“d”,m); 第二部分数据结构(共1 00分)一、单项选择题(本大题共1 2,qJ、题,每小题2分:共24分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将正确答案代码填写在答题纸相应位置上。1要表示高校的校、系、班级的
12、有关数据及其关系,选择 比较合适。 A线性结构 B树结构 C图结构 D集合结构2下列函数中渐近时间复杂度最小的是 。 3已知一个栈s以及一个输入序列(A,B,C,D,E),每个元素按照A,B,C,D,E顺序进栈一次,进栈后可立即出栈,也可在栈中停留一段时间后再出栈,则不能得到 序列。 AA,B,C,D,E BBA,E,D,C CC,B,A,D,E DD,C,A,B,E4平均排序效率最好的排序方法是 。 A直接插入排序 B快速排序 C简单选择排序 D冒泡排序5某链表中最常用的操作是在已知的一个结点之前插入一个新结点和删除其之前一个结点,则采用 存储方式最节省运算时间。 A双向链表 B带头指针的单
13、向链表 C带尾指针的单向链表 D单向循环链表6在逻辑结构不变的情况下,不是导致一个图的遍历序列不唯一的因素是 A出发点不同 B存储(物理)结构不同 C遍历方法不同 D画法不同7散列函数有一个共同的要求,即函数值应当尽量以 取其值域的每个值。 A最大概率 B最小概率 C正态分布概率D均等概率8下面 方法可以判断出一个图中是否存在环(回路)。 A 排序 B深度和广度遍历 C求最短路径 D求关键路径9最佳二叉搜索(排序)树是 。 A关键码个数最小的二叉搜索树 B退化为线性的二叉搜索树 C搜索中平均比较次数最小的二叉搜索树 D任何结点的度数为0或2的二叉搜索树10. 是数据的基本单位,即数据集合(对象
14、)中的个体。 A 数据结构 B数据项 C数据元素 D数据对象11 (线性)表是一个 。 A有限序列,可以为空 B 有限序列,不能为空 C 无限序列,可以为空 D无限序列,不能为空12树是结点的集合,它 根结点。 A 有0个或1个 B 有0个或多个 C 有且只有1个 D 有1个或1个以上二、填空题 (本大题共7小题,每空2分,共1 6分) 请将答案写在答题纸相应的位置上。13在有n个顶点的有向图中,每个顶点的度最大可达 。14以下程序段的时间复杂度是 。i=0;j=o; while(i+jj) j+; else i+; 15右图所示的二叉树后序遍历的结果是16在一个双向链表中P所指结点之前插入一
15、个由指针s所指的新结点,写出可执行的操作序列: 。(前指和后指的指针域分别为prior和next)17 (线性)表有两种存储结构:顺序存储结构和链式存储结构,请就这两种存储结构完成下列填充: 存储密度较大,可以随机存取; 不可以随机存取,插入和删除操作比较方便。18递归的程序执行时使用 来保存各层递归调用时的现场信息,以保证可以正确返回。19设数组aM(M为最大空间个数)作为循环队列Q的存储空间,front为队头指针(指向第一个存放数据的位置),rear为队尾指针(指向最后一个存放数据位置的下一个),则判定Q队列的队满条件是 三、应用题(本大题共4小题,每小题1 0分,共40分) 请将答案写在
16、答题纸相应的位置上。20设字符集D=A,B,C,D,E),各字符使用频率W=10,2,5,6,4)。画出对字符进行哈夫曼编码时所对应的哈夫曼树,并给出各字符的编码。21用普里姆(Prim)算法从右图中的顶点1开 始逐步构造最小支撑(代价生成)树,要求 画出构造的每一步。22给定待排关键字集合为23,14,48,25,5,19,按关键字非递减(从小到大)排序,写出采用冒泡排序的每一趟(最外层循环的每一次)排序结果。23(1)图示表示右边有向图的邻接表。(4分)(2)写出从顶点1开始分别进行深度 优先和广度优先遍历的顶点序列各一种。(6分)四、算法设计题(本大题共2小题,每小题1 0分,共20分)
17、 请将答案写在答题纸相应的位置上c24假定用一个有头结点循环链表来存储一个有序的线性表,线性表从头到尾为非递减(从小到大)有序(如下图)。用指针(如下图)。用指针current从head开始搜索数据域等于key的元素在线性表中位置,如果搜索成功则current指向搜索到的结点,函数返回该指针;如果搜索不成功,函数返回空指针NULL。请在函数SortedlistLocate(head,key)内填空,完成下列算法以实现这种搜索,并使得搜索不成功的平均比较次数小于链表长度。typedef struct node elemtype data;数据域 struct node *next;指针域 1no
18、de,术linklist;linklist SortedlistLocate(1inklist head,elerntype key)linklist current;if( (1) ) return ERROR;错误提示current= (2) ;while( (3) & (4) )current=current-next;循链搜索其值等于key的结点if ( (5) ) return current;找到,返回结点地址else return NULL;未找到,返回空指针 25r为一维数组,其中r0到rn-为待排序的n个元素,排序好的元素仍在r0到 rn-1中。请写出对该数组进行非递减排序的
19、直接插入排序算法取名为InsertSort(etemtype r ,int n)。第三部分 关系数据库与SQL语言(共1 00分)一、单项选择题(本大题共20小题,每小题2分,共40分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将正确答案代码写在答题纸相应位置上。1. 数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是 。ADBS包括DB乖DBMS BDBMS包括DB和DBSCDB包括DBS和DBMS DDBS就是DB,也就是DBMS2.下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是 I人工管理阶段II文件系统阶段III数据库阶
20、段。AI帮II B只有I CII帮III D只有II3.下面的选项不是关系数据库基本特征的是 。A不同的列应有不同的数据类型 B不同的列应有不同的列名C与行的次序无关 D与列的次序无关4. 从一个数据库文件中取出满足某个条件的所有记录形成一个新的数据库文件的操作是 操作。A投影 B连接 C选择 D复制6. SOL语言中,删除一个视图的命令是 。ADELETE BDROP CCLEAR DREMOVE7. 在SQI二语言中,修改数据结构应使用的命令是 。ACHANGE B CREATE C ALTER D. DEI,E FE8下述SQL命令中,允许用户定义新关系时,引用其他关系的主码作为外码的是
21、 。 AINSERT BREFERENCES CDELETE DSELECT9规范化理论是关系数据库进行逻辑设计的理论依据,第一范式是指关系中的每一个属性都是 。 A长度不变的 B互不相关的 C互相独立的 D不可分解的10若用如下的SQL语句创建了一个表SC:CREATE TABLE SC(S CHAR(6) NOT NULL,C CHAR(3) NOT NULL,SCORE INTEGER,NOTE CHAR (20);向SC表插入如下行时, 行可以被插入。 A(200823,101,NULL,NULL) B(201009,111,60,必修) C(NULL,103,80,选修) D(201
22、132,NULL,86, )11规范化理论是数据库 阶段的指南和工具。 A需求分析 B概念设计 C逻辑设计 D物理设计12候选码的属性有 。 A多个 B0个 C1个 D1个或多个13关系模式中,满足3NF的模式 。 A可能是2NF B必定是4NF C必定是2NF D必定是BCNF A一对多 B一对一 CN对N D多对多15能够用条件限定记录的分组的SELECT语句的子句是 AWHERE BHAVING C GROUPBY DORDERBY16关系数据模型的三个组成部分中,不包括 。 A完整性规则 B数据结构 C。恢复 D数据操作A4 B5 C6 D 718在E-R模型中,用来表示关系的是 。
23、A椭圆形 B平行四边形 C菱形D矩形19删除索引用的SQL语句是 。 ADELETE INDEX BDROP INDEX CDELETE CLUSTERED INDEX DDROP CLUSTERED INDEX20下列聚合函数中不忽略空值(null)的是 。ASUM(列名) BMAX(列名) CCOUNT(*) DAVG(列名)二、填空题(本大题共6小题,每空2分,共20分) 请将答案写在答题纸相应的位置上。21数据库系统常见的数据模型仃层次模型、网状模型与 三种。22关系数据模型中,二维表的列称为 ,二维表的行称为 23数据库管理系统提供四个方面的数据控制功能,包括数据的 、数据的完整性控
24、制、 和数据恢复。25关系模型的三类完整性是指实体完整性、 和 。26数据库设计包括数据库的 和数据库的三、根据题意,用SQL语句实现以下操作(本大题共25分) 请将答案写在答题纸相应的位置上。27现有关系数据库三个基本表如下: 学生表 STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT),其属性分别为(学生,姓名,性别,年龄,系); 学号 姓名 性另 年龄 系 SNO SNAME SSEX SAGE SDEPT 200215121 李勇 男 20 CS 200215122 刘晨 女 19 IS 200215123 王敏 女 18 IS 课程表COURSE(CNO,CNAME,
25、CPNO,CREDIT),其属性分别为(课程号,课程名,先行课,学分1 课程号 课程名 先行课 学分 CNO CNAME CPNO CREDIT 1 数据库 3 4 2 操作系统 4 3 3 数据结构 7 4 4 数据处莲 2 选修表SC(SNO,CNO,GRADE),其属性分别为(学号,课程号,分数) 学号 课徉号 分数 SNO CNO GRADE 200215121 1 92 200215121 2 85 200215122 2 90 用SQL语言实现下列一小题:查询所有学生的学号与姓名(本小题2分):查询成绩优秀(90分及以上)学生的学号、课程号与分数(本小题4分)计算学生表STUDEN
26、T中学生的总人数(本小题4分):给学生表STUDENT插入一条记录,记录信息为(学号:200215300:姓名:黄帝;性别:男;年龄:21;系:CS),注意学生表年龄为整型,其余为字符型(本小颢4分): 在学生表STLIDENE、中,“性别”为字符型,请创建一个名字为MEN VIEW的全体男生信息视图(本小题4分);删除选修表SC中没有成绩的记录(注意:成绩为0不算“没有成绩的记录”)(本小题4分); 对于某门课程,如果所有选课的学生考试成绩都低于80分,并且该课程的学分大于2,将其改为2(本小题3分)。四、计算题(本大题共2小题,共1 5分)请将答案写在答题纸相应的位置上。28假设某连锁店数据库中有一关系模式R如下: 如果规定: (1)不同的商店可以销售相同的商品,但每个商店的每种商品只在一个部门销售; (2)每个商店的每个部门只有一个负责人; (3)每个商店的每种商品只有一个库存数量。 试回答下列一小题: 根据上述规定,写出关系模式R的基本函数依赖;(本小题3分) 试问关系模式R最高已经达到第几范式?为什么?(本小题9分) 29用关系代数表达式实现下列一小题: 检索学生成绩得过满分(100分)的课程的课程号、课程名和学分;(本小题4分) 检索“国际贸易”系中成绩不及格的学生信息,包括学号、姓名、课程名和分数。(本小题4分)