4.1 算法及其特征 知识点题库

小丁想买几张6+1彩票,选号时,他希望前4位用自己的生日:11月8日,即1108,特别号码他选了买彩票日子的个位数5,并且他希望前六个数字组成的数能被他的幸运数字9整除。他的好朋友小杰帮他设计了一个VB程序,可以提供一份符合这些要求的号码清单供他挑选。相应的界面如图1所示。阅读程序并完成后面的问题。

图1

 

  1. (1) 设计应用程序界面时,为添加a所指向的对象,应使用2图所示的“控件工具箱”中的 (填写相应编号);在图3所示的“属性窗口”中,将 属性值设置为“开始”,可使图2中b所指向的对象显示“开始”。
  2. (2) 请根据题意将下列程序补充完整。

    Private Sub Command1_Click()

    Dim i as integer, j as integer, c As Integer

    Dim n As Long

    c = 0

    For i = 0 To 99

          n = 110800 + i

                  If        ①         Then

              List1.AddItem Str(n) + " " + "5"

                    ②     

         End If

    Next i

    Label2.Caption = "满足条件的数有:" + Str(c) + "组"

    End Sub
         ②

下列关于高级程序设计语言的叙述中,正确的是(   )   
A . 编写的程序不能跨操作系统平台运行 B . 语法表述与自然语言完全不同 C . 具有可视化编程功能 D . 必须要有更高级的硬件配置才能运行
关于算法,下面说法正确的是(     )。
A . 解决同一问题只有一种算法 B . 算法对程序运行效率没有影响 C . 解决同一问题的算法不是唯一的 D . 算法设计在计算机解决问题的过程中并不重要,可以省略
通过设计程序解决问题时,工作过程中最恰当的顺序是(  )
A . 提出问题→设计算法→编写程序→得到答案 B . 提出问题→编写程序→运行程序→得到答案 C . 设计算法→编写程序→调试程序→得到答案 D . 提出问题→设计程序→编写程序→运行程序
平面上有n(3<=n<=100)个房间围成一圈,编号分别为 1~n,相邻的两个房间之间均有一扇门,第i个房间最多居住人数为a(i)。初始时选择一个房间,将所有人都聚集在该房间,接着每个人都可以顺时针方向走到相邻的房间,直到找到居住的房间。最后每个房间刚好住满。一个人每经过一扇门花费1的能量,请确定初始房间及每个人找房间的方案,使得所有人花费的能量的和最小。

例如:n = 5,a(1)= 4,a(2)= 7 ,a(3)= 8,a(4)= 6,a(5)= 4。

最佳方案为初始时所有人聚集在2号房间花费的最小能量为7*0+8*1+6*2+4*3+4*4=48。

实现上述功能的 VB 代码如下,但加框处代码有错,请改正。

Dim a( 1 To 100) As Integer   '依次存储编号为 1 到 100 的房间的最多居住人数

Private Sub Form_Load()

'产生N的值

'本过程从数据库中依次读取编号为1到 N的房间的最多居住人数,并存储在数组a中

'代码略

End Sub

Private Sub Command1_Click()

Dim i As Integer, j As Integer, w As Integer

Dim t As Long, ans As Long

ans = 32767

For i=1 To n

     t = 0

     For j=0 To n-1

            ‘(1)

      If w=0 Then w=n

           ‘(2)

   Next j

   If t < ans Then ans = t

Next i

Text2.Text = Str(ans)

End Sub

以上程序段运行时,为了实现上述功能,加框处代码应改正为:

;⑵

现有n根棍子,第i根棍子的长度为ai 。想要从中选出三根棍子组成周长尽可能长的三角形,输出最大的周长;若无法组成三角形,则输出0。如当n=5,a={2,3,4,5,10}时,输出12,即选择了3、4、5。当n=4,a={4,5,10,20}时,无法组成三角形,输出0。加框处代码有误,请改正。

Dim a(1 To 1000) As Integer

Dim n As Integer

Private Sub Form_Load()

‘确定n的值和数组a的各个元素值,即每根棍子的长度值,代码略

End Sub

Function max(x As Integer, y As Integer) As Integer

If x > y Then

    max=x

  Else

    max=y

  End If

End Function

Private Sub Command1_Click()

  Dim i As Integer , j As Integer , k As Integer

  Dim ans As Integer , c As Integer , longest As Integer , rest As Integer

ans=0

  ‘让 i<j<k,保证棍子不会重复选中

  For i=1 To n

  For j=i+1 To n

   For k=j+1 To n

    c=a(i)+a(j)+a(k)

    longest=     ‘①

    rest=c-longest    ‘rest 保存最短的两条边的和

    If  Then    ‘②

     ans=max(ans , c)

End If

   Next k

Next j

  Next i

Print ans

End Sub

 ② 

算法是求解某一问题的步骤和方法。算法的输出结果至少应有(   )。
A . 0个 B . 1个 C . 2个 D . 3个
i=3:s=1/(i-3)无法执行,原因是它违反了算法特征中的(  )
A . 有穷性 B . 唯一性 C . 可行性 D . 确定性
下列问题适合使用枚举算法解决的是(  )
A . 计算已知半径圆的面积 B . 超市打折方案 C . 校园歌曲大赛的成绩排名 D . 计算10000以内的所有的素数
下列关于算法的描述,正确的是 (    )
A . 算法是描述解决问题的方法和步骤 B . 同一种算法只能用一种程序语言来实现 C . 描述算法的方法只有流程图 D . 算法就是数值计算的方法
若执行a= (-1)^0.5,则该执行步骤违反了算法的(    )。
A . 有穷性 B . 确定性 C . 可行性 D . 有0个或多个输入
10个数据“23,15,51,36,78,47,39,9,88,96”依次存放在列表a中,使用如下Python程序段找出大于70的数的个数。

a=[23,15,51,36,78,47,39,9,88,96]

n=0

m=70

for i in range(0,10):

    if            

        n+=1

print("个数:",n)

程序中划线处的代码应为(    )

A . a[i]>n B . a[i]<n C . a[i]>m D . a[i]< m
下列关于算法的描述正确的是(    )
A . 算法只能用流程图描述 B . 算法只能有一个输入 C . 一个算法的执行步骤可以是无限的 D . 一个算法至少要有一个输出
通过对算法的理解,下列叙述中能称为算法的是(   )。
A . 手机支付需要连接网络 B . 一般商家都支持手机支付 C . 手机支付需要进行扫描二维码、输入金额、输入支付密码这些步骤 D . 手机支付减少了纸币的使用
哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的偶数都可写成两个质数之和。下列程序的功能即验证哥德巴赫猜想。程序运行时,在文本框Text1中输入一个大于2的偶数,单击“证明”按钮Command1后,在列表框List1中输出所有符合猜想的组合,在标签Label2中输出共有多少个组合。程序运行效果如下图所示。

为实现上述功能程序如下,但加框处的代码有误,请改正。

Private Sub Command1_Click()

    Dim n As Integer

    Dim i As Integer, c As Integer

    n = Val(Text1.Text)

    List1.Clear

    c = 0

    If n Mod 2 = 0 Then

        For        ①

            If    Then            ②

                List1.AddItem n & "=" & i & "+" & n - i

                c = c + 1

            End If

        Next i

        Label2.Caption = "共有" & c & "种组合"

    Else

        Label2.Caption = "请输入一个大于 2 的偶数"

    End If

End Sub

Function is Prime(x As Integer) As Boolean

    Dim i As Integer

    Is Prime = True

    For i = 2 To Int(Sqr(x))

        If x Mod i = 0 Then

            Is Prime = False

            Exit For

        End If

    Next i

End Function

 ② 

用枚举算法求解“找出所有满足各位数字之和等于5的三位数”时,在下列所列举的数值范围内,算法执行效率最高的是(   )
A . 从0到999 B . 从100到999 C . 从100到500 D . 从104到500
火柴棒等式。用火柴棒可以摆出0-9的数字,摆放规则如下图所示:

有一种火柴棒游戏,将火柴棒摆成形如“A+B=C”的火柴棒等式。用n根火柴棒摆放数学等式的规则约定如下:

⑴A、B都是不大于1000的正整数,若数值非零,则最高位不能是0;

⑵摆放“+”与“=”各使用两根火柴棒;

⑶A+B=C 与B+A=C视为相同的等式;

⑷n根火柴棒必须全部用上。

小明依据上述规则使用VB编写程序,研究“使用n根火柴棒,可以摆放出哪些不同的等式”,代码如下所示。请回答下列问题。

Dim sz(0 To 9) As Integer     ‘数组元素sz(i)用于存储数字i所使用的火柴棒的数量

Private Sub Form_Load()

    sz(0) = 6 : sz(1) = 2 : sz(2) = 5 : sz(3) = 5 : sz(4) = 4

    sz(5) = 5 : sz(6) = 6 : sz(7) = 3 : sz(8) = 7 : sz(9) = 6

End Sub

‘自定义函数hcs用于求解摆放数字x需要使用的火柴棒数量

Function hcs(ByVal x As Integer) As Integer

    Dim s As Integer, k as integer

    s = 0

    Do While     ①    

        k = x Mod 10

        s=s+sz(k)

        x = x \ 10

    Loop

    hcs = s + sz(x)

End Function

Private Sub Command1_Click()

    Dim n As Integer

    Dim a As Integer, b As Integer, c As Integer

    n = Val(Text1.Text)

    ans = 0

    List1.Clear

    For a = 0 To 999

        For b =    ②     To 999

            c = a + b

            If     ③    Then

                List1.AddItem (Str(a) + "+" + Str(b) + "=" + Str(c))

                ans = ans + 1

            End If

        Next b

    Next a

    List1.AddItem ("共有" + Str(ans) + "种等式")

End Sub

  1. (1) 请在划线处填入合适的代码。

     ② ③ 

  2. (2) 某次运行程序时,显示的等式中包含“7+17=24”,根据程序分析,输入的n的值为:
王涛在利用循环语句设计程序时,出现了死循环,其原因是该程序不符合算法的(   )。
A . 确定性要求 B . 有穷性要求 C . 可行性要求 D . 输入输出要求
下列有关“算法”的说法不正确的是(   )。
A . 算法是解决问题的方法和步骤 B . 算法的每一个步骤和次序应当是确定的 C . 算法在执行有限个步骤后必须结束 D . 算法是能够在计算机上运行的程序语言
下列关于算法的描述,不正确的有:()
A . 广义地讲,“算法”指的是解决问题或完成任务的一系列步骤 B . 算法有多种不同的描述方式 C . 通过算法让计算机解决问题时,数据、运算及控制转移成为算法的要素 D . 算法的第一个执行步骤必须是数据输入
最近更新