软件工程基础试题九Word文件下载.docx
《软件工程基础试题九Word文件下载.docx》由会员分享,可在线阅读,更多相关《软件工程基础试题九Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
};
char**p;
inti;
p=alpha;
for(i=0;
i<
4;
i++)
printf("
%c"
*(p[i]));
\n"
);
A)AEIMB)BFJNC)ABCDD)DHLP
8.下面程序的输出结果是____。
char*pp[2][3]={"
abc"
"
defgh"
ijkl"
mnopqr"
stuvw"
xyz"
main()
{printf("
%c\n"
***(pp+1));
/*①*/
**pp[0]);
/*②*/
(*(*(pp+1)+1))[4]);
/*③*/
*(pp[1][2]+2));
/*④*/
%s\n"
**(pp+1));
/*⑤*/
①A)aB)dC)iD)m
②A)aB)dC)iD)m
③A)hB)lC)qD)w
④A)kB)oC)uD)z
⑤A)ijklB)mnopqrC)stuvwD)xyz
9.下面程序的输出结果是____。
#include"
stdio.h"
structstr1
{charc[5];
char*s;
{structstr1s1[2]={{"
},{"
IJK"
,"
LMN"
}};
structstr2
{structstr1sr;
intd;
}s2={"
OPQ"
RST"
,32767};
structstr1*p[2];
p[0]=&
s1[0];
p[1]=&
s1[1];
%s"
,++p[1]->
s);
,s2.sr.c[2]);
①A)LMNB)MNC)ND)IJK
②A)OB)PC)QD)R
10.以下程序的输出结果是____。
structst
{intx,*y;
}*p;
ints[]={10,20,30,40};
structsta[]={1,&
s[0],2,&
s[1],3,&
s[2],4,&
s[3]};
{p=a;
%d\n"
++(*(++p)->
y));
A)10B)11C)20D)21
第二大题(程序填空题,每题2分)
1.下面程序的功能是输入学生的姓名和成绩,然后输出。
structstuinf
{charname[20];
/*学生姓名*/
intscore;
/*学生成绩*/
}stu,*p;
{p=&
stu;
Entername:
gets(①);
Enterscore:
"
scanf("
,②);
Output:
%s,%d\n"
,③,④);
2.下面程序的功能是按学生的姓名查询其成绩排名和平均成绩。
查询时可连续进行,直到输入0时才结束。
#include<
string.h>
#defineNUM4
structstudent
{intrank;
char*name;
floatscore;
};
①stu[]={3,"
liming"
,89.3,
4,"
zhanghua"
,78.2,
1,"
anli"
,95.1,
2,"
wangqi"
,90.6
main()
{charstr[10];
inti;
do
Enteraname"
scanf("
,str);
for(i=0;
NUM;
i++)
if(②)
{printf("
Name:
%8s\n"
,stu[i].name);
printf("
Rank:
%3d\n"
,stu[i].rank);
Average:
%5.1f\n"
,stu[i].score);
③;
}
if(i>
=NUM)printf("
Notfound\n"
}while(strcmp(str,"
0"
)!
=0);
}
3.下面程序的功能是从终端上输入5个人的年龄、性别和姓名,然后输出。
structman
unsignedage;
charsex[7];
{structmanperson[5];
data_in(person,5);
data_out(person,5);
data_in(structman*p,intn)
{structman*q=①;
for(;
p<
q;
p++)
{printf("
age:
sex:
name"
);
%u%s"
&
p->
age,p->
sex);
②;
data_out(structman*p,intn)
{structman*q=__③__;
p++)
%s;
%u;
p->
name,p->
4.输入N个整数,储存输入的数及对应的序号,并将输入的数按从小到大的顺序进行排列。
要求:
当两个整数相等时,整数的排列顺序由输入的先后次序决定。
例如:
输入的第3个整数为5,第7个整数也为5,则将先输入的整数5排在后输入的整数5的前面。
程序如下:
#defineN10
struct
{intno;
intnum;
}array[N];
{inti,j,num;
for(i=0;
N;
enterNo.%d:
,i);
,&
num);
for(①;
j>
=0&
&
array[j].num②num;
③)
array[j+1]=array[j];
array[④].num=num;
array[⑤].no=i;
%d=%d,%d\n"
,i,array[i].num,array[i].no);
5.以下程序的功能是:
读入一行字符(如:
a、...y、z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。
{structnode
{charinfo;
structnode*link;
}*top,*p;
charc;
top=NULL;
while((c=getchar())①)
{p=(structnode*)malloc(sizeof(structnode));
info=c;
link=top;
top=p;
while(top)
{②;
top=top->
link;
putchar(p->
info);
free(p);
第三大题(写程序5分)
输入n值,输出如图所示图形。
参考答案
第一大题
1.答案:
B
注释:
长整型数32768在计算机内的表示是1000000000000000,以一般整型进行输出时,此数恰是-32768的补码。
2.答案:
C
3.答案:
D
4.答案:
C
5.答案:
A
6.参考答案:
C
p是指针,pp是指向指针的指针。
7.参考答案:
A
对于指向数组的指针变量可以做下标运算,p[i]和alpha[i]都是指向字符串的首地址,*p[i]取出字符串的第一个字符。
8.参考答案:
①D②A③D④D⑤B
pp是一个二维指针数组,pp+1指向数组的第二维,*(pp+1)是第二维的起始地址,**(pp+1)是第二维第一个元素的地址,***(pp+1)是第二维第一个元素的内容,所以,①的参考答案应选D。
*(pp+1)+1是第二维第二个元素的地址,*(*(pp+1)+1)是第二维第二个元素,(*(*(pp+1)+1))[4]则是第二维第二个元素所指字符串下标为4的元素,即是字符w,故③应当选D。
9.参考答案:
①B②C
10.参考答案:
第二大题
①stu.name②&
stu.score③p->
name④p->
score
这是结构中的最基本概念。
①structstudent②strcmp(stu[i].name,str)==0③break
程序的主体是一个二重循环,内层for循环完成查找学生的工作。
①处是进行结构数组说明并初始化,按照结构变量说明的格式规定,应该填写:
strcutstudent。
②处为if语句的逻辑条件,应当是当查找到指定的学生后输出学生的情况,因此应当填写:
strcmp(stu[i].name,str)==0。
③处应当将控制退出内层的for循环,只能选择break语句。
①p+n②gets(p->
name)③p+n
本程序是通过函数完成对于结构数组的输入和输出操作。
函数data_in和data_out十分相似,都是通过结构指针p和结构指针q来操作结构数组的元素。
由于指针q在两个函数中的作用相同,所以①和③填写的内容也应该是相同的;
由for语句中的循环终止条件"
q"
可以看出,q应该指在数组的最后一个元素之后,所以①和③应当填入p+n。
②应当完成姓名的输入工作,应当为gets(p->
name)。
①j=i-1②>
③j--④j+1⑤j+1
程序的基本思想是:
对于输入的第i个整数num,从数组array中已有的元素中倒序开始查找。
若数组array中的第j个元素的值大于num,则将数组中的元素j向后移动一个位置;
否则,就应将num插入到当前位置作为元素j。
因此,程序的基本设计思想就是插入排序。
程序中内层的for循环完成查找插入位置的工作,因此答案①、②和③有密切的关系,要统一考虑。
同样,程序中的答案④和⑤也有密切的关系,要统一考虑。
①!
='
\n'
②p=top
第三大题
{inti,j,n;
\nPleaseEntern:
&
n);
for(i=1;
=n;
{for(j=1;
j<
j++)
if(j<
=i)printf("
1"
elseprintf("
%3d"
j-i+1);
数据结构
第一大题(每题2分)
1.组成数据的基本单位是()。
(A)数据项(B)数据类型(C)数据元素(D)数据变量
2.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<
1,2>
,<
2,3>
3,4>
4,1>
},则数据结构A是()。
(A)线性结构(B)树型结构(C)图型结构(D)集合
3.数组的逻辑结构不同于下列()的逻辑结构。
(A)线性表(B)栈(C)队列(D)树
4.二叉树中第i(i≥1)层上的结点数最多有()个。
(A)2i(B)2i(C)2i-1(D)2i-1
5.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为()。
(A)p->
next=p->
next->
next(B)p=p->
next
(C)p=p->
next(D)p->
next=p
6.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是()。
(A)6(B)4(C)3(D)2
7.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为()。
(A)100(B)40(C)55(D)80
8.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为()。
(A)3(B)4(C)5(D)1
9.根据二叉树的定义可知二叉树共有()种不同的形态。
(A)4(B)5(C)6(D)7
.10.设有以下四种排序方法,则()的空间复杂度最大。
(A)冒泡排序(B)快速排序(C)堆排序(D)希尔排序
第二大题(5分)
已知二叉树的存储结构为二叉链表,阅读下面算法。
typedefstructnode{
DateTypedata;
Structnode*next;
}ListNode;
typedefListNode*LinkList;
LinkListLeafhead=NULL;
VoidInorder(BinTreeT)
{
LinkLists;
If(T){
Inorder(T->
lchild);
If((!
T->
lchild)&
(!
rchild)){
s=(ListNode*)malloc(sizeof(ListNode));
s->
data=T->
data;
next=Leafhead;
Leafhead=s;
}
rchild);
对于如下所示的二叉树
(1)画出执行上述算法后所建立的结构;
(2)说明该算法的功能。
参考答案:
第一大题:
1.C2.C3.D4.C5.A
6.C7.C8.B9.B10.B
第二大题
33.
(1)Leafhead
F
H
G
∧
(2)中序遍历二叉树,按遍历序列中叶子结点数据域的值构建一个以Leafhead为头指针的逆序单链表(或按二叉树中叶子结点数据自右至左链接成一个链表)。
数据库
前三题每题5分,最后题10分
1.使用数据库系统有什么好处?
2.数据库管理系统的主要功能有哪些?
3.数据库的完整性概念与数据库的安全性概念有什么区别和联系?
4.建立一个关于系、学生、班级、学会等诸信息的关系数据库。
学生:
学号、姓名、出生年月、系名、班号、宿舍区。
班级:
班号、专业名、系名、人数、入校年份。
系:
系名、系号、系办公地点、人数。
学会:
学会名、成立年份、办公地点、人数。
语义如下:
一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。
一个系的学生住在同一宿舍区。
每个学生可参加若干学会,每个学会有若干学生。
学生参加某学会有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。
指出各关系模式的候选码、外部码,有没有全码存在?
1.使用数据库系统有什么好处?
答:
使用数据库系统的好处是由数据库管理系统的特点或优点决定的。
使用数据库系统的好处很多,例如,可以大大提高应用开发的效率,方便用户的使用,减轻数据库系统管理人员维护的负担,等等。
使用数据库系统可以大大提高应用开发的效率。
因为在数据库系统中应用程序不必考虑数据的定义、存储和数据存取的具体路径,这些工作都由DBMS来完成。
用一个通俗的比喻,使用了DBMS就如有了一个好参谋、好助手,许多具体的技术工作都由这个助手来完成。
开发人员就可以专注于应用逻辑的设计,而不必为数据管理的许许多多复杂的细节操心。
还有,当应用逻辑改变,数据的逻辑结构也需要改变时,由于数据库系统提供了数据与程序之间的独立性,数据逻辑结构的改变是DBA的责任,开发人员不必修改应用程序,或者只需要修改很少的应用程序,从而既简化了应用程序的编制,又大大减少了应用程序的维护和修改。
使用数据库系统可以减轻数据库系统管理人员维护系统的负担。
因为DBMS在数据库建立、运用和维护时对数据库进行统一的管理和控制,包括数据的完整性、安全性、多用户并发控制、故障恢复等,都由DBMS执行。
总之,使用数据库系统的优点是很多的,既便于数据的集中管理,控制数据冗余,提高数据的利用率和一致性,又有利于应用程序的开发和维护。
读者可以在自己今后的工作中结合具体应用,认真加以体会和总结。
(l)数据库定义功能;
(2)数据存取功能;
(3)数据库运行管理;
(4)数据库的建立和维护功能。
答:
数据的完整性和安全性是两个不同的概念,但是有一定的联系。
前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(Garba:
eInGarba:
eout)所造成的无效操作和错误结果。
后者是保护数据库防止恶意的破坏和非法的存取。
也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
解:
(1)关系模式如下:
学生:
S(Sno,Sname,Sbirth,Dept,Class,Rno)
班级:
C(Class,Pname,Dept,Cnum,Cyear)
系:
D(Dept,Dno,Office,Dnum)
学会:
M(Mname,Myear,Maddr,Mnum)
(2)每个关系模式的最小函数依赖集如下:
A、学生S(Sno,Sname,Sbirth,Dept,Class,Rno)的最小函数依赖集如下:
SnoSname,SnoSbirth,SnoClass,ClassDept,DEPTRno
传递依赖如下:
由于SnoDept,而DeptSno,DeptRno(宿舍区)
所以Sno与Rno之间存在着传递函数依赖。
由于ClassDept,DeptClass,DeptRno
所以Class与Rno之间存在着传递函数依赖。
由于SnoClass,ClassSno,ClassDept
所以Sno与Dept之间存在着传递函数依赖。
B、班级C(Class,Pname,Dept,Cnum,Cyear)的最小函数依赖集如下:
ClassPname,ClassCnum,ClassCyear,PnameDept.
由于ClassPname,PnameClass,PnameDept
所以C1ass与Dept之间存在着传递函数依赖。
C、系D(Dept,Dno,Office,Dnum)的最小函数依赖集如下:
DeptDno,DnoDept,DnoOffice,DnoDnum
根据上述函数依赖可知,Dept与Office,Dept与Dnum之间不存在传递依赖。
D、学会M(Mname,Myear,Maddr,Mnum)的最小函数依赖集如下:
MnameMyear,MnameMaddr,MnameMnum
该模式不存在传递依赖。
(3)各关系模式的候选码、外部码,全码如下:
A、学生S候选码:
Sno;
外部码:
Dept、Class;
无全码
B、班级C候选码:
Class;
Dept;
C、系D候选码:
Dept或Dno;
无外部码;
D、学会M候选码:
Mname;
软件工程
5个题,每题5分。
1.应该怎样来划分阶段?
2.某单位拟开发一个计算机房产管理系统,要求系统具有分房、调房、退房和查询统计等功能。
房产科将用户申请表输入系统后,系统首先检查申请表的合法性,对不合法的申请表,系统拒绝接收;
对合法的申请表根据类型分别进行处理。
3.比较层次方框图与结构图是的异同?
4.软件测试的基本任务?
5.等价分类法的测试