A.35 B.84
C.49 D.25
2、如图,汉诺塔问题是指有3根杆子A,B,C,杆子上有若干碟子,把所有的碟子从B杆移到A杆上,每次只能移动一个碟子,大的碟子不能叠在小的碟子上面,把B杆上的3个碟子全部移动到A杆上,最少需要移动的次数是()
A.12 B.9 C.6 D.7
3、一程序框图如图1-1-25所示,它能判断任意输入的数x的奇偶性,其中判断框中的条件是()
A.m=0 B.x=0C.x=1 D.m=1
图1-1-25
4、阅读下面的程序框图并判断运行结果为…()
A.55 B.-55
C.5D.-5
5、给出下面的算法:该算法表示()
S1 m=a;
S2 若b<m,则m=b;
S3 若c<m,则m=c;
S4 若d<m,则m=d;
S5 输出m.
A.a,b,c,d中最大值 B.a,b,c,d中最小值
C.将a,b,c,d由小到大排序 D.将a,b,c,d由大到小排序
6、下列关于算法的说法中,正确的是 ( )
A.求解某一类问题的算法是唯一的
B.算法必须在有限步 *** 作之后停止
C.算法的每一步 *** 作必须是明确的,不能有歧义或模糊
D.算法执行后一定产生确定的结果
7、算法共有三种逻辑结构,即顺序结构、条件分支结构和循环结构,下列说法正确的是()
A.一个算法只能含有一种逻辑结构
B.一个算法最多可以包含两种逻辑结构
C.一个算法必须含有上述三种逻辑结构
D.一个算法可以含有上述三种逻辑结构的任意组合
8、下面的程序框图中是循环结构的是()
A.①② B.②③C.③④ D.②④
9、阅读下边的程序框图,若输入的n是100,则输出的变量S和T的值依次是()
A.2 500,2 500 B.2 550,2 550
C.2 500,2 550 D.2 550,2 500
10、程序框是程序框图的一个组成部分,下面的对应正确的是 ( )
①终端框(起止框),表示一个算法的起始和结束 ②输入、输出框,表示一个算法输入和输出的信息 ③处理框(执行框),功能是赋值、计算 ④判断框,判断某一条件是否成立,成立时在出口处标明“是”或“Y”,不成立时标明“否”或“N”
A.(1)与①,(2)与②,(3)与③,(4)与④
B.(1)与④,(2)与②,(3)与①,(4)与③
C.(1)与①,(2)与③,(3)与②,(4)与④
D.(1)与①,(2)与③,(3)与④,(4)与②
二、填空题
1、已知函数f(x)=|x-3|程序框图1-1-26表示的是给定x值,求其相应函数值的算法.请将该程序框图补充完整.其中①处应填_______________,②处应填_______________.
图1-1-26
2、写出下列程序框图表示的算法功能.
(1)如1-1-14图(1)的算法功能是(a>0,b>b)____________________.
(2)如1-1-14图(2)的算法功能是_____________________.
图(1)图(2)
图1-1-14
3、已知函数f(x)=|x-3|,下面的程序框图表示的是给定x值,求其相应函数值的算法.请将该程序框图补充完整.其中①处应填___________________________________________________.
②处应填_______________________________________________________________________.
4、指出程序框图1-1-24运行结果.
图1-1-24
若输入-4,则输出结果为_______________.
三、解答题
1、写出求方程ax2+bx+c=0的根的算法,画出相应的程序框图,并要求输出它的实根.
2、写出一个求解任意二次函数y=ax2+bx+c(a≠0)的最值的算法.
3、一把石子,3个3个地数,最后余下2个;5个5个地数,最后余下3个;7个7个地数,最后余下4个.请设计一个算法,求出这把石子至少有多少个.
3 已知一株非空二元树,其先根与中根遍历的结果为:
先根:ABCDEFGHI
中跟:CBEDAGFHI
将此二元树构造出来。
答: A
/ \
B F
/ \ / \
C D G H
/ \
I E
4.分析下列程序的运行时间:
A) void mystery(int n)
{int i, j, k
for(i=1i<ni++)
for(j=i+1j<=nj++)
for(k=1k<=jk++)
{some statement requiring O(1) time}
}
我的答案是 n3 不过不是很确定
B)void podd(int n)
{int I, j, x, y
for(I=1I<=nI++)
if( odd(I ) )
{for(j=Ij<=nj++)
x=x+1
for(j=1j<=Ij++)
y=y+1
}
}
n2 也不是很确定
5 已知数学表达式是(3+b)sin(x+5)—a/x2,求该表达式的波兰表示法的前缀和后缀表示(要求给出过程)。
表达式对应的二叉树为
所以对应的前缀为:-*+3bsin+x5/a*xx
后缀为:3b+x5+sin*axx*/-
三 实现下列算法
在指针实现的线性表L中,实现在线性表L中删除关键字为x的结点。
答:
int visited[n]
void dfs(Graph g, int i)
{edgeNode *t
printf(“%4d”,i)
visited[i]=1
t=g[i]
while(t!=NULL) {
if (visited[t->vno]= =0)
dfs(g,t->vno)
t=t->next
}
}
在线索二元树中,由结点P求其中根顺序的后继。
答:
typedef enum {lLINK ,THREAD} PointerTag // LINK==0指针,
THREAD==1;线索
typedef struct BinThrNode {
TElemType data;
struct BinThrNode *lchilid, *rchild;
PointerTag ltag, rtag;
} BinThrNode,* BinThrTree
中序遍历线索二叉树
p所指结点前驱的求法:
当p->ltag==THREAD时,前驱为p->lchild;
当p->ltag==LINK时,前驱为p->lchild的最右下方结点。
在二元查找树F中,实现插入记录R。
答:
Void INSERT(records R, BST &F)
{if(F= =NULL)
{F=new celltype
F->data=R
F->lchild=NULL
F->rchild=NULL}
else if(R,key<F->data.key)
INSERT(R,F->lchild)
else if(R,key>F->data.key)
INSERT(R,F->rchild)
}
四、对下面的带权连通无向图,用Prim(普里姆)算法,构造一株最小生成树。画出构造过程的每一步。(12分)
五 设要分类的数据存放在数组A
3 1 4 1 5 9 2 6 5 3
中,要进行堆分类,首先得为其建立一个初始堆,试画出初始建设堆过程中,二元树的变化和数组A的变化。
C |
试题分析: ,执行程序, ,不满足 , 执行程序, ,不满足 , 执行程序, ,满足 ,输出 故选 . |
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)