软件工程基础试题四.docx
《软件工程基础试题四.docx》由会员分享,可在线阅读,更多相关《软件工程基础试题四.docx(12页珍藏版)》请在冰豆网上搜索。
软件工程基础试题四
C语言
第一大题每题1分
1、下列不属于C语言关键字的是________。
2、A)defaultB)registerC)enumD)external
2、下列转义字符中错误的一个是____。
A)'\000'B)'\0014'C)'\x111'D)'\2'
3、已知inti=10;表达式"20-0<=i<=9"的值是____。
A)0B)1C)19D)20
4、已知inta=15,执行语句a=a<<2以后,变量a的值是____。
A)20B)40C)60D)80
5、求取满足式12+22+32+……+n2≤1000的n,正确的语句是____。
A)for(i=1,s=0;(s=s+i*i)<=1000;n=i++);
B)for(i=1,s=0;(s=s+i*i)<=1000;n=++i);
C)for(i=1,s=0;(s=s+i*++i)<=1000;n=i);
D)for(i=1,s=0;(s=s+i*i++)<=1000;n=i);
6、以下程序的输出结果是。
main()
{intx=10,y=10;printf("%d%d\n",x――,――y);
}
A)1010B)99C)910D)109
7、下面程序的输出结果是____。
main()
{inta=111;
a=a^00;
printf("%d,%o\n",a,a);
}
A)111,157B)0,0C)20,24D)7,7
8、下面程序的输出结果为。
main()
{inta=1,b=0;
switch(a)
{case1:
switch(b)
{case0:
printf("**0**");break;
case1:
printf("**1**");break;
}
case2:
printf("**2**");break;
}
}
A)**0**B)**0****2**C)**0****1****2**D)有语法错误
9、从键盘上输入"446755"时,下面程序的输出是____。
#include
main()
{intc;
while((c=getchar())!
='\n')
switch(c-'2')
{case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;
}
printf("\n");
}
A)888988B)668966C)88898787D)66898787
10、下面程序的输出结果是____。
main()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<-3;j++)
{if(j%2)
continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
A)x=4B)x=8C)x=6D)x=12
第二大题每题2分
1、下面程序的功能是计算1-3+5-7+……-99+101的值。
main()
{inti,t=1,s=0;
for(i=1;i<=101;i+=2)
{①;
s=s+t;
②;
}
printf("%d\n",s);
}
2、下面程序的功能是统计用0至9之间的不同的数字组成的三位数的个数。
main()
{inti,j,k,count=0;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
if(①)continue;
elsefor(k=0;k<=9;k++)
if(②)count++;
printf("%d",count);
}
3、下面程序的功能是删除字符串s中的空格。
#include
main()
{char*s="Beijingligongdaxue";
inti,j;
for(i=j=0;s[i]!
='\0';i++)
if(s[i]!
='')①;
else②;
s[j]='\0';
printf("%s",s);
}
4、下面的函数expand在将字符串s复制到字符串t时,将其中的换行符和制表符转换为可见的转义字符表示,即用'\n'表示换行符,用'\t'表示制表符。
expand(chars[],chart[])
{inti,j;
for(i=j=0;s[i]!
='\0';i++)
switch(s[i])
{case'\n':
t[①]=②;
t[j++]='n';
break;
case'\t':
t[③]=④;
t[j++]='t';
break;
default:
t[⑤]=s[i];
break;
}
t[j]=⑥;
}
5、下面的程序是用递归算法求a的平方根。
求平方根的迭代公式如下:
#include
doublemysqrt(doublea,doublex0)
{doublex1,y;
x1=①;
if(fabs(x1-x0)>0.00001)
y=mysqrt(②);
elsey=x1;
return(y);
}
main()
{doublex;
printf("Enterx:
");
scanf("%lf",&x);
printf("Thesqrtof%lf=%lf\n",x,mysqrt(x,1.0));
}
第三大题5分
编写程序,输出如图所示高度为n的图形。
参考答案
第一大题
1、答案:
D
2、答案:
C
3、答案:
B
4、答案:
C
5、答案:
A
6、参考答案:
D
注释:
对变量x的――操作是后缀形式,变量x的减1操作要在执行完printf函数之后才进行,所以变量x的值在输出的时候仍然保持原值10。
7、参考答案:
A
8、参考答案:
B
9、参考答案:
C
10、参考答案:
A
第二大题
1、答案:
①t=t*i②t=t>0?
-1:
1
2、答案:
①i==j②k!
=i&&k!
=j
3、答案:
①s[j++]=s[i]②s[j]=s[i]
4、答案:
①j++②'\\'③j++④'\\'⑤j++⑥'\0'
5、答案:
①(x0+a/x0)/2②a,x1
注释:
根据迭代公式,①处应当是计算迭代值x1=(x0+a/x0)/2。
按照求平方根的要求,当迭代的精度不能满足"(fabs(x1-x0)>0.00001)"时,则要继续迭代,因此②处应当填写"a,x1"。
程序中调用了求绝对值的库函数fabs()。
第三大题
分析:
编程的关键为两点,一是使用控制输出的行和列,这方面的内容在前面已经叙述,另一点是输出的数字和所在行、列关系。
此题第一行输出的数字恰好是列数,从第二行起每行的数字均比上一行增n。
参考答案:
main()
{inti,j,n;
printf("\nPleaseEntern:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%4d",(i-1)*n+j);
printf("\n");
}
}
数据结构
第一大题每空1分
1、通常从四个方面评价算法的质量:
_________、_________、_________和_________。
2、一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为________。
3、假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J)),则树中所含的结点数为__________个,树的深度为___________,树的度为_________。
4、后缀算式923+-102/-的值为__________。
中缀算式(3+4X)-2Y/3对应的后缀算式为_______________________________。
5、若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指针。
在这种存储结构中,n个结点的二叉树共有________个指针域,其中有________个指针域是存放了地址,有________________个指针是空指针。
6、对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点分别有_______个和________个。
7、AOV网是一种___________________的图。
8、在一个具有n个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的有向完全图中,包含有________条边。
9、向一棵B_树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度___________。
10、在快速排序、堆排序、归并排序中,_________排序是稳定的。
第二大题5分
设有一个输入数据的序列是{46,25,78,62,12,80},试画出从空树起,逐个输入各个数据而生成的二叉搜索树。
参考答案
第一大题
1、答案:
正确性易读性强壮性高效率
2、答案:
O(n)
3、答案:
933
4、答案:
-134X*+2Y*3/-
5、答案:
2nn-1n+1
6、答案:
e2e
7、答案:
有向无回路
8、答案:
n(n-1)/2n(n-1)
9、答案:
增加1
10、答案:
归并
第二大题
参考答案:
数据库
第一大题每题1分
1、SQL中,下列涉及空值的操作,不正确的是()
A.AGEISNULLB.AGEISNOTNULL
C.AGE=NULLD.NOT(AGEISNULL)
2、关系数据模型的三个组成部分中,不包括()
A.完整性规则B.数据结构C.数据操作D.并发控制
3、DB,DBMS和DBS三者间的关系是()
A.DB包括DBMS和DBSB.DBS包括DB和DBMS
C.DBMS包括DBS和DBD.DBS与DB、DBMS无关
4、数据库的并发操作可能带来的问题包括()
A.丢失更新B.数据独立性会提高
C.非法用户的使用D.增加数据的冗余度
5、并发事务的交叉执行破坏了事务的()
A.原子性B.隔离性C.一致性D.永久性
6、3NF()规范化为BCNF。
A.消除非主属性对码的部分函数依赖
B.消除非主属性对码的传递函数依赖
C.消除主属性对码的部分和传递函数依赖
D.消除非平凡且非函数依赖的多值依赖
7、()是长期存储在计算机内的有组织,可共享的数据集合。
A.数据库管理系统B.数据库系统C.数据库D.文件组织
8、一个1:
n联系可以转换为一个独立的关系模式,关系的码为()
A.实体的码B.各实体码的组合C.n端实体的码D.每个实体的码
9、在数据库设计中,将ER图转换成关系数据模型的过程属于()
A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段
10、关系完备的系统是指()。
A.仅支持关系数据结构,不支持集合级的操作
B.仅支持关系数据结构和三种关系操作
C.支持关系数据结构和所有的关系代数操作
D.支持关系模型的所有特征
第二大题15分
设有学生-课程数据库,其数据库模式为:
学生S(学号SNO,姓名SN,所在系SD,年龄SA)、课程C(课程号CNO,课程姓名CN,先修课号PCNO)、学生选课SC(学号SNO,课程号CNO,成绩G)。
试用关系代数,Sql语言分别写出下列查询:
(1)查询选修了2号课程的学生的学号;(5分)
(2)求选读了‘数据库概论'的学生学号和姓名;(5分)
(3)求选修了全部课程的学生学号、姓名。
(5分)
参考答案
第一大题
1、答案:
C
2、答案:
D
3、答案:
B
4、答案:
A
5、答案:
B
6、答案:
C
7、答案:
C
8、答案:
C
9、答案:
B
10、答案:
C
第二大题
参考答案:
关系代数:
(1)sno(cno=‘2'(SC))(2分)
(2)Sno,Sn(Cn='数据库概论')(2分)
(3)Sno,SN(S(Cno,sno(SC)÷Cno(C)))(2分)
(1)SELECTCOUNT(*)FROMSTUDENT(2分)
(2)SELECTSNOFROMSC
GROUPBYSNOHAVINGCOUNT(*)>5(3分)
(3)DELECTFROMSC
WHERESC.CNOIN(SELECTC.CNOFROMCWHERECN='数据结构')
DELETEFROMCWHERECN=‘数据结构'(3分)
软件工程
共五题,每题5分
1、软件生存周期为什么划分成阶段?
2、系统流程图与数据流程图有什么区别?
3、变换分析设计的步骤?
4、测试与调试的主要区别?
5、软件项目有哪些特点?
参考答案
1、软件生存周期为什么划分成阶段?
答案:
(1)任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。
(2)可以降低每个阶段任务的复杂程度,简化不同阶段的联系,有利于工程的组织管理,也便于采用良好的技术方法。
(3)使软件开发的全过程以一种有条不紊的方式进行,保证软件的质量,特别是提高了软件的可维护性。
2、系统流程图与数据流程图有什么区别?
答案:
系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具。
系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况。
数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况。
3、变换分析设计的步骤?
答案:
(1)区分传入、传出和变换中心三部分,划分DFD图的分界线;
(2)完成第一级分解:
建立初始SC图的框架;
(3)完成第二级分解:
分解SC图的各个分支;
(4)对初始结构图按照设计准则进行精化与改进。
4、测试与调试的主要区别?
(1) 测试从一个侧面证明程序员的失败;调试证明程序员的正确;
(2) 测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试从不可知内部条件开始,除统计性调试外,结果是不可预见的;
(3) 测试有计划并且要进行测试设计;调试不受时间约束;
(4) 测试是发现错误、改正错误、重新测试的过程;调试是一个推理的过程;
(5) 测试执行是有规程的;调试执行要求程序员进行必要的推理;
(6) 测试由独立的测试组在不了解软件设计的件下完成;调试由了解详细设计的程序员完成;
(7)大多数测试的执行和设计可由工具支持;调试用的工具主要是调试器。
5、软件项目有哪些特点?
答案:
(1)软件项目与其他任何产业项目不同,它是算法、思想、概念、组织、流程、效率、优化等的融合体;
(2)开发软件项目产品,在多数情况下,用户给不出明确的想法和要求。
(3)在开发过程中,程序及其相关的文档资料常常需要修改,在修改过程中又可能带来新的问题,且这些问题要在很久以后才会发现。
(4)在研制开发过程中,文档资料是不可缺少的,但工作量又是巨大的,往往也是人们不愿去作的。
(5)参加软件项目的工作人员,要求具有一定的业务水平和实际工作经验,而很难完全避免的人员流动,对工作的影响是很大的。
离开的人员不仅带走了重要的信息,而且带走了工作经验。