软件技术基础试题及答案Word下载.docx
《软件技术基础试题及答案Word下载.docx》由会员分享,可在线阅读,更多相关《软件技术基础试题及答案Word下载.docx(8页珍藏版)》请在冰豆网上搜索。
11.操作系统通过记载、跟踪、控制进程的执行,它是进程存在的唯一标志。
作业调度程序是从处于状态的作业中选取一个作业并把它装入主存。
12A.软件生命周期瀑布模型一般可分为问题分析、、、
和软件维护五个阶段。
二、选择题(每小题1分,共10分)
1.已知:
intx;
下列语句正确的是()。
A.int*p=&
x;
B.int*p=x;
C.intp=&
D.int*p=*x;
2.inta[]={1,2,3,4,5},b[5],*p;
则下列语句中不正确的语句是()。
A.p=b+1;
B.p=&
a[3];
C.p=a;
D.b=a;
3.设有以下说明语句
structnode{inta;
floatb;
};
structnodenode1,node2,*pnode;
则下列语句中正确是()。
A.node1=node2;
B.pnode.a=10;
C.return(node1+node2);
D.scanf(“%d%f”,node1);
4.线性链表不具有的特点是()。
A.可随机访问任一个结点B.不必事先估计所需存储空间大小
C.插入与删除时不必移动元素D.所需空间与线性表长度成正比
5.若让元素1,2,3依次进栈,则出栈次序不可能出现()种情况。
A.3,2,1B.2,1,3
C.3,1,2D.1,3,2
6.有向图的邻接表中,顶点Vi的出度是()。
A.依附于Vi的弧数B.Vi链表中的邻接结点个数
C.Vi在表结点中出现的次数D.Vi度的一半
7.某二叉树的先序序列和后序序列正好相反,则该二叉树一定是()的二叉树。
A.空或只有一个结点B.深度等于其结点数
C.任一分支结点均无左子树D.任一分支结点均无右子树
8.在一个单链表中,若指针p指向某一结点,指针q指向p的前驱结点,要在q与p之间插入一个由s所指的结点,则执行()。
A.s→next=p→next;
p→next=s;
B.p→next=s;
s→next=q;
C.p→next=s→next;
s→next=p;
D.q→next=s;
9.如果以链表作为栈的存储结构,则出栈操作时()。
A.必须判别栈是否满B.对栈不作任何判别
C.必须判别栈是否空D.判别栈元素的类型
10.设单链表中指针p指着结点A,若要删除A之后的结点(若存在),则需要修改指针操作为()。
A.p->
next=p->
next->
nextB.p=p->
next
C.p=p->
nextD.p->
next=p
11.具有6个顶点的无向图至少需要()条边才能确保是一个连通图。
A.6B.7
C.4D.5
12.对线性表进行二分查找时,要求线性表必须满足()。
A、以顺序方式存储B、以链接方式存储
C、以顺序方式存储,且结点按关键字有序排列D、以链接方式存储,且结点按关键字有序排列
13.对于进程的描述,下列说法错误的是()。
A.一个进程可以包含若干个程序B.一个程序可能被多个进程执行
C.一个程序仅对应一个进程D.进程是程序的一次执行过程
14.临界区是指并发进程中访问共享变量的()段。
A.管理信息
B.信息存储
C.数据
D.程序
15.若当前进程因时间片用完而让出处理机时,该进程应转变为()状态。
A、执行B、就绪C、阻塞D、唤醒
二、简答题(每题5分,共20分)
1.软件设计的任务是什么?
分为哪几个步骤?
每个步骤的任务是什么?
2.用简单插入排序法,对关键字值序列为:
12,3,24,45,1,18按从小到大的顺序进行排列,试写出每趟排序的结果。
(5分)
3.已知一棵二叉树的中序遍历结果为DBHEAFICG,先序遍历结果为ABDEHCFIG,请画出该二叉树,并写出实现步骤。
4.给出下面有向图的邻接矩阵。
四、程序题(共40分)
1.程序填空(5分)
下面是实现二分查找算法的函数,试将其补充完整。
intbinsearch(ints[],intk,intn)
{intlow,high,mid;
low=0;
while()
{
if(s[mid]==k)
{printf("
searchingsuccess!
\n"
);
return(mid);
}
elseif(s[mid]<
k)
else
printf("
searchingfailed!
return(-1);
}
2.已知一顺序表L={78,91,66,95,35,88,52,100},编写一函数voiddellist(listtype*L,intx):
删除顺序表L中第一个值小于x的元素,若该表中没有小于x的元素则不作任何操作。
(10分)
3.设有一个带头结点的单链表,表中各数据元素为无序的正整数,编写下列2个函数。
(1)node*find_min_node(node*h):
找出头指针h指向的单链表中数据值最小的结点,打印该结点的数据值,并返回该结点指针;
(2)voidswitch_next_node(node*p):
若指针p指向的结点数据值为奇数,则将该结点与其直接后继结点的数值交换,若指针p指向的结点无后继结点或数据值为偶数,则不做任何操作;
软件技术基础答案
一,填空
1,逻辑结构;
数据操作集合2,链式;
顺序3,0;
14,队列;
栈
5,366,5;
7;
1023。
7,n-i+1;
n-i8,front==(rear+1)%MAX,front==rear9,图10,互斥条件;
部分分配条件;
不可剥夺条件
11,pcb(进程控制块);
后备12.软件设计;
编程实现;
软件测试
二,选择
ADAACBBDCADCCDB
三,简答题
1,
(1)软件设计的任务是将需求分析阶段获得的需求说明书转换为计算机中可实现的系统,完成系统的结构设计,包括数据结构和程序结构,最好得到软件设计说明书。
(2分)
(2)软件设计通常可分为两个步骤:
概要设计和详细设计。
(1分)
(3)概要设计完成软件系统的模块的划分和模块的层次结构以及数据库设计;
详细设计完成每个模块的控制流程的设计。
2.,
第一趟:
[3,12],24,45,1,18
第二趟:
[3,12,24],45,1,18
第三趟:
[3,12,24,45],1,18
第四趟:
[1,3,12,24,45],18
第五趟:
[1,3,12,18,24,45]
3
4
四,程序题(5分)
1,下面是实现二分查找算法的函数,试将其补充完整。
high=n-1;
low<
=highmid=(low+high)/2;
low=mid+high=mid-1;
2,
typedefstruct
{intdata[10];
intnum;
}listtype;
voiddellist(listtype*L,intx);
/*删除函数声明*/
main()
{listtypelist={78,91,66,95,35,88,52,100},*L;
/*初始化顺序表*/
intx;
L=&
list;
l->
num=8;
scanf(“%d”,&
x);
dellist(L,x);
voiddellist(listtype*L,intx)
{inti,j;
for(i=0;
i<
L->
num;
i++)
{if(L->
data[i]<
x)
{for(j=i+1;
j<
l->
j++)
L->
data[j-1]=L->
data[j];
num--;
break;
3,
typedefstructnode
{intdata;
structnode*next;
}node;
voidmain()
{
node*head,*p;
head=creat();
/*创建单链表*/
p=find_min_node(head);
/*查找数据值最小的结点*/
switch_next_node(p);
node*find_min_node(node*h)
intmin;
node*p,*t;
if(h==NULL)
returnNULL;
p=h->
next;
t=NULL;
min=p->
data;
while(p!
=NULL)
{
if(p->
data<
min)
{
t=p;
min=p->
}
p=p->
min=%d\n"
t->
data);
returnt;
voidswitch_next_node(node*p)
node*q;
intt;
q=p->
if(q==NULL||p->
data%2==0)
return;
t=p->
p->
data=q->
q->
data=t;