Multi-Choice Questions
  1. ____是一步一步解决问题或完成任务的方法。
    a.结构体 b.递归 c.迭代 d.算法

  2. 在处理开始之前给变量赋值,称为____变量。
    a.构造 b.迭代 c.初始化 d.增量

  3. 在计算机科学里有____种基本结构。
    a.1 b.2 c.3 d.4

  4. ____结构用于测试条件。
    a.顺序 b.判断 c.循环 d.逻辑

  5. ____结构用于表示任何动作。
    a.顺序 b.判断 c.循环 d.逻辑

  6. ____结构用于处理重复的动作。
    a.顺序 b.判断 c.循环 d.逻辑

  7. ____是算法的图形化表示。
    a.流程图 b.结构图 c.伪代码 d.算法

  8. ____是一种用类似英语语言来表示代码的表示方法。
    a.流程图 b.结构图 c.伪代码 d.算法

  9. ____是一种高层设计工具用来表现程序各模块间关系的工具。
    a.流程图 b.结构图 c.伪代码 d.算法

  10. 子算法又称为____。
    a.函数 b.子例程 c.模块 d.以上都是

  11. ____是一种用来计算一组数据乘积的基本算法。
    a.求和 b.乘积 c.最小 d.最大

  12. ____是一种根据数据值大小进行排列的基本算法。
    a.查询 b.排序 c.查找 d.递归

  13. ____是一种累加一组数据的基本算法。
    a.求和 b.乘积 c.最小 d.最大

  14. ____是一种在一组数据中寻找最小值的算法。
    a.求和 b.乘积 c.取最小 d.取最大

  15. 在____排序中,数据项被分成两个列表:有序表和无序表。
    a.选择 b.冒泡 c.插入 d.以上都是

  16. 在____排序中,需要n-1次扫描才能完成排序。
    a.选择 b.冒泡 c.插入 d.以上都是

  17. 在____排序中,需要两重循环。
    a.选择 b.冒泡 c.插入 d.以上都是

  18. 在____排序中,进入有序列表的数据总是无序列表中的第一个元素。
    a.选择 b.冒泡 c.插入 d.以上都是

  19. 在____排序中,将无序列表中的最小元素与无序列表中的起始元素进行交换。
    a.选择 b.冒泡 c.插入 d.以上都是

  20. 在____排序中将最小的元素移到无序列表的起始位置,且没有一对一的交换。
    a.选择 b.冒泡 c.插入 d.以上都是

  21. ____是用于在数据列表中确定目标数据位置的一种基本算法。
    a.排序 b.查找 c.乘积 d.求和

  22. 对于无序列表使用____查找。
    a.顺序 b.折半 c.冒泡 d.插入

  23. 对于有序列表使用____查找。
    a.顺序 b.折半 c.冒泡 d.插入

  24. ____是一种算法自我调用的过程。
    a.插入 b.查找 c.递归 d.迭代

Exercises

41. 给出下图中(书上是图8-11)的乘积算法的伪代码.

42. 画出从N个数中寻找最小数的流程图.

43. 写出练习42中的求最小值算法的伪代码.

44. 画出从N个数中寻找最大数的流程图.

45. 写出练习44中的求最大值算法的伪代码.

47. 画出冒泡排序算法的流程图并写出其伪代码.

48. 画出插入排序算法的流程图并写出其伪代码.

49. 使用选择排序算法,手工排序下列数据列表并给出每次扫描所做的工作.
14 7 23 31 40 56 78 9 2

50. 使用冒泡排序算法,手工排序下列数据列表并给出每次扫描所做的工作.
14 7 23 31 40 56 78 9 2

51. 使用插入排序算法,手工排序下列数据列表并给出每次扫描所做的工作.
14 7 23 31 40 56 78 9 2

52. 一个列表中包含以下元素。前两个元素已经使用选择排序算法排好序了,那么在进行 了三次扫描后列表中元素排序结果如何?
7 8 26 44 13 23 57 98

53. 一个列表中包含以下元素。前两个元素已经使用冒泡排序算法排好序了,那么在进行 了三次扫描后列表中元素排序结果如何?
7 8 26 44 13 23 57 98

54. 一个列表中包含以下元素。前两个元素已经使用插入排序算法排好序了,那么在进行 了三次扫描后列表中元素排序结果如何?
7 8 26 44 13 23 57 98

55. 一个列表中包含以下元素。使用折半查找算法,跟踪查找88的步骤,要求给出每一步中 first, mid和last的值.
8 13 17 26 44 56 88 97

56. 一个列表中包含以下元素。使用折半查找算法,跟踪查找20的步骤,要求给出每一步中 first, mid和last的值.
8 13 17 26 44 56 88 97

57. 使用下面的定义编写一个寻找两个整数最大公约数(gcd)的递归算法.
gcd(x,y) =
  gcd(y,x)  if x < y
  x       if y = 0
  gcd(y,x mod y)  otherwise

58. 使用下面的定义编写一个求组合数C(n,k)的递归算法.
C(n,k) =
  1     if k = 0 or n = k
  C(n-1,k) + C(n-1,k-1)  if n > k > 0