算法与程序框图习题

算法与程序框图习题,第1张

一、选择题

1、根据算法程序框图,当输入n=6时,输出的结果是()

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

试题分析: ,执行程序, ,不满足 ,

执行程序, ,不满足 ,

执行程序, ,满足 ,输出

故选 .


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11819842.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存