人教中图版(2019)2021-2022学年必修1 2.4常见算法的程序实现 培优练习

试卷更新日期:2022-02-22 类型:同步测试

一、选择题

  • 1. 以下适合用解析法解决的问题是(      )。
    A、计算出租车费 B、求符合要求的三位正整数的“水仙花数” C、将10个评委的打分按由大到小的顺序排序 D、找出一筐乒乓球质量不符合标准的球
  • 2. 某算法的部分流程图如图所示。执行这部分流程后,a,b的值分别是

  • 3. 关于枚举法,下列说法错误的是(    )
    A、枚举法的基本思想就是,根据问题的部分已知条件预估解的范围,并在此范围内对所有可能的情况进行逐一验证,直到找到满足已知条件的解为止 B、枚举范围的大小直接影响着枚举法的执行效率 C、枚举法,也称蛮力法或暴力搜索法,理论上利用这种方法可破解任何一种密码 D、枚举范围中的判定条件直接影响着枚举法的执行效率
  • 4. 某对分查找算法的VB程序段如下:

    i=1:j=7

    f=False

    key=Val(Text1. Text)

    Do While i<=j And Not f

        m=(i+j)\2

        If a(m)=key Then f=True

        If a(m)>key Then i=m-1 Else i=m+1

    Loop

    List1. AddItem Str(i)+Str(j)+Str(m)

    数组元素a(1)到a(7)的值依次为"23,42,58,66,77,83,98",运行上述程序段后,列表框List1中

    显示的结果为"5 4 5",则文本框Text1中输入值的范围是(      )

    A、[66,77] B、[66,77) C、(66,77] D、(66,77)
  • 5. 有如下VB程序段

    Dim a(1 To 5)As Integer

    Dim d(1 To 5)As Integer

    a(1)=12:a(2)=21:a(3)=19:a(4)=11:a(5)=20

    n=5:Max=0

    For i=1 To n

        d(i)=0

        For j=1 To i-1

            If a(j)<a(i)Then d(i)=d(i)+1

        Next j

        If d(i)>Max Then Max=d(i)

    Next i

    执行完以上程序段后,Max的值为(    )

    A、1 B、2 C、3 D、4
  • 6. 下面说法正确的是(     )
    A、算法+数据结构=程序 B、算法就是程序  C、数据结构就是程序 D、算法包括数据结构
  • 7. 如要编程画出由100个圆组成的图案,比较好的算法是(   )。
    A、按顺序执行100个画不同大小圆的程序段 B、①先编写1个能画不同大小圆的程序模块 ②在主程序中用100语句调用画圆程序模块 C、①先编写1个能画不同大小圆的程序模块 ②用循环方法调用100次画圆程序模块 D、不必先定义画圆程序模块,而直接循环100次的方法来画图案
  • 8. 已知有这样一种对冒泡排序的优化方法:在每一遍“加工”过程中,记录在这遍“加工”中是否进行过数据交换。若在一遍“加工”过程中没有进行过数据交换,则数据已经有序,可以直接退出循环结束排序。则下列说法错误的是(   )
    A、对有n个数据的数组进行优化后的冒泡排序,最小比较次数为n-1。 B、对有n个数据的数组进行冒泡排序,无论是否优化,最大比较次数相同。 C、对冒泡排序算法进行优化,能够较大提高其效率,符合算法设计的一般原则。 D、若待排序数组中的数据依次为23,17,46,58,34,11,对其使用优化后的冒泡排序进行升序排序,比较次数为9。

二、填空题

  • 9. 阅读下列程序,写出运行结果

    a,b = 1,1

    n = int(input("请输入一个大于等于3的正整数n:"))

    for i in range(n-2):c = a + b

    a = b

    b = c

    print(c)

    程序运行后,输入:6

    运行输出结果是:

  • 10.    有一种算法是把所有可能的答案一一列举,合适就保留,不合适就丢弃。这种方法称作。枚举法解决问题的一般结构:
  • 11. 输入123,以下流程图描述的算法,执行结果是

  • 12. 阅读以下程序,写出程序运行结果。

    def jc(n):

    s=1

    for i in range(2,n+1):

        s=s*i

        return s

        total=jc(4)    #调用jc函数

    print(total)

    程序运行后,其输出结果为

  • 13. 阅读下列程序,写出运行结果

    s = 1

    for i in range(1,10,3):s = s *i

    print(s)

    运行输出结果是:

  • 14. 阅读下列程序,写出运行结果。

    m = int(input("请输入一个正整数:"))

    x = m

    y = m

    for i in range (9):n = int(input("请输入一个正整数:"))

    if n<x :

    x = n

    if n<y :

    y = n

    print(x, y)

    程序运行后,依次输入:12   35   9   11   23   88   13   19   29   55

    运行结果是:

三、程序编写

  • 15. 编写一个程序,它将找到所有这些数字,可被7整除,但不是5的倍数,2000年至3200年(包括在内)。得到的数字应按逗号分隔的顺序打印在一行上。

    提示:考虑使用range(#begin,#end)

  • 16. 骑车与走路

    方便又环保的共享单车作为中国新四大发明的存在,已经在很多城市投放使用。在使用过程要经历找车、开锁、停车、锁车等环节。请你用计算机编程来判断在不同的距离使用下,是骑车快还是走路快。

    假设找到自行车,开锁并骑上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。