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

下列程序的功能是在text1中输入的自然数,分解为3个互不相同的质数(三个质数的和等于输入的自然数),并把分解产生的质数按升序顺序显示在左边的列表框中。例如,输入20,那么在列表框中会显示如右图所示结果。其中,上述界面中“分解”按钮的名称是“Command1”,程序中函数f(x)的功能是判断x是否为质数,如果是质数则返回值为true,否则返回false.

请在下列程序代码的基础上按照要求设计该程序, 完善程序中的划线部分。

Dim n As Integer, a1 As Integer, a2 As Integer, a3 As Integer

Function f(x) As Boolean

f = True

      For i = 2 To Sqr(x)

         If x Mod i = 0 Then      ①     

Next i

End Function

Private Sub Command1_Click()

n =      ②       

For a1 = 2 To n

 For a2 = a1 To n

  For a3 = a2 To n

   If     ③      And f(a1) And f(a2) And f(a3) Then

    List1.AddItem (Str(a1) + " " + Str(a2) + " " + Str(a3))

   End If

  Next a3

 Next a2

Next a1

End Sub

其中①处填入;②处填入;③处填入

三个正整数a、b、c满足等式a2+b2=c2 , a、b、c称为“勾股数”,求出100以内所有“勾股数”可采用的算法是        (   )
A . 枚举算法 B . 解析算法 C . 冒泡排序 D . 顺序查找
王敏的E-Mail邮箱密码忘记了,但她需要收一封很重要的来信,请你帮她尽可能找出密码。她零星记得自己密码信息:

①密码是六位数字,前面两位为31;

②最后两位数字相同;

③能被16和46整除。

程序界面如下图所示,单击 "帮助找回密码"按钮(Command1),可能的密码显示在列表框List1中。

 

解决此问题的相应程序如下:

Private Sub Command1_Click()

Dim  a  As  Integer, s  As  long, b  As Integer, i  As  Integer

For  i = 0  To      ①      

    s = 310000 + i

    If  s  Mod  46 = 0   And  s  Mod  16 = 0   Then

              ②      

        b = (s  Mod  100) \ 10

        If a = b Then

            List1.AddItem Str(s)

        End If

    End If

Next i

End Sub

  1. (1) 解决此问题的算法是。(选填:枚举算法 或 解析算法)
  2. (2) 程序中①划线处应填入
  3. (3) 程序中②划线处应填入
关于描述算法的工具,以下说法正确的是(     )
A . 自然语言表示的算法便于翻译成程序设计语言 B . 流程图依赖于计算机程序设计语言 C . 用伪代码描述的算法易于向计算机程序设计语言过渡 D . 伪代码的可读性比自然语言强
小张编写 VB 程序,实现如下功能:在前 100 个偶自然数中,计算恰好有四位为 1 的二进制数的个数, 如图所示,单击“计算”按钮 Command1,在文本框 Text1 中显示符合条件的个数,在列表框 List1 中显示符合条件的二进制数。VB 程序代码如下:

提示:本题“除 2 取余倒排法”的方法将十进制转化为二进制,算法如下: 例如十进制数“97”转化为二进制的过程如右图所示:

因此“97”二进制值为:1100001

  1. (1) 解决此问题主要采用的算法是      (选填字母)
    A . 解析算法 B . 枚举算法
  2. (2) 为了实现程序的功能,请在划线处填入合适的代码。Private Sub Command1_Click()

      Dim a As Integer, c As Integer, w As Integer, i As Integer

      Dim s As String, k As String

      c = 0

      For m = 1 To 100

        k = ""

        i = 2 * m

        Do While i > 0

           a=i Mod 2 

      

           k = str(a) + k

        Loop

     

    For n = 1 To Len(k)

           s = Mid(k, n, 1)

           If s = "1" Then w = w + 1

        Next n

    If w = 4 Then

       c = c + 1

     End if

     Next m

     Text1.Text = Str(c) End Sub

下列问题不能用算法描述的是 (   )
A . 找出所有能被3整除的自然数 B . 输入身高体重,判断体型情况 C . 找出1000个整数中的最大值与最小值 D . 将(64)10  转换为对应的二进制数
【加试题】《孙子算经》中提出“物不知其数”的问题,此数以3除余2,以5除余3,以7除余2。下列VB程序用来求指定范围内满足该条件的自然数及其个数。程序界面如图所示,VB程序段如下:Private Sub Command1_Click(   )

  k = 0                 '用来计数

  Max = 600             '指定范围600以内

  n = 9                                  

  Do While n <= Max

  Loop

  Label1.Caption = Str(Max) & "范围内满足问题的数有" & Str(k) & "个"

End Sub

方框中的代码由以下五部分组成:

① n=n+7

② k = k + 1

③ List1.AddItem Str(n)

④ End If

⑤ If n Mod 3 = 2 And n Mod 5 = 3 Then

代码顺序正确的选项是(  )

A . ⑤①②③④ B . ②⑤③①④ C . ⑤③②④① D . ⑤①③④②
用计算机无法解决"打印所有素数"的问题,其原因是解决该问题的算法违背了算法特征中的(  )
A . 唯一性 B . 有穷性 C . 有0个或多个输入 D . 有输出
下列关于算法的描述,正确的是 (  )
A . 算法是解决问题的方法和步骤 B . 同一种算法只能用一种程序语言来实现 C . 描述算法的方法只有流程图 D . 算法就是数值计算的方法
下列关于算法的叙述,错误的是(    )
A . 算法一定有输入 B . 算法可以使用程序设计语言来实现 C . 算法必须有输出 D . 算法必须执行有限步以后能结束
星期天,小杰来到动物园游玩,园内共有N个景点,每个景点都有一个标号,标号为1至N。现在只知道每个景点有一条路连接下一个景点。小杰想知道,根据这些道路信息,从其中一个景点出发,最后再回到出发景点,最多能游玩多少个景点。

例如,共有N=5个景点,每个景点连接的下一个景点分别是2,4,5,5,2。

景点号

1

2

3

4

5

下一景点号

2

4

5

5

2

则他可以从2号景点出发,最多可以游玩2号、4号、5号三个景点。

程序代码如下:

Private Sub Command1_Click()

Dim a(1 To 100) As Integer, d(1 To 100) As Integer  ′数组a存放下一景点号

Dim jd As String, m As String, c As Integer, i As Integer

Dim s As Integer, p As Integer, k As Integer, ans As Integer

jd = Text1.Text + “,”

s = 0: c = 0

For i = 1 To Len(jd)

  m = Mid(jd, i, 1)

  If m <> ”,” Then

    s = s * 10 + Val(m)

  Else

    c=c+1:a(c)=s:s=0      ′含义

  End If

Next i

ans = 0: k = 0

For i = 1 To c      ′枚举游览起点

  For k = 1 To c

    d(k) = 0

  Next k

  If d(i) = 0 Then

    p = i

    Do While p <= c

      If d(p) = 0 Then

        k=k+1:d(p)=k

      Else

        y=   ②          ′填空

      If y>ans Then ans=y

      k = 0

      Exit Do

      End If

              ′改错

    Loop

  End If

Next i

Text2.Text = Str(ans)

End Sub

  1. (1) 若要实现显示“景点连接情况:”的Text1在程序运行时默认为空,则需要将Text1的属性设置为空。
  2. (2) 若有7个景点,且每个景点的连接情况为:6,3,7,2,7,5,4,那么小杰最多可以游玩的景点数是
  3. (3) 程序代码中,有下划线的语句“a(c)=s”代表的含义是
  4. (4) 程序代码中,程序代码填空:y=
  5. (5) 程序代码中,加框处代码有错,请改正
一个算法必须要有1个以上的数据输入。
求方程组的解。有如下方程组:

求该方程组解的Python程序如下:

for x in range(1,8,1):

    if      :

        print("x= ",x)

        print("y=",38-5*x)

回答下列问题:

  1. (1) 上述程序中,用到的主要算法是
  2. (2) 为了使程序能正确运行,上述程序划线处的代码应为
关于算法,下列叙述正确的是(     )
A . 一种算法只能用一种程序语言来实现 B . 同一个算法可以有多种描述形式 C . 一个算法可以没有输出 D . 算法是解题方法的精确描述,它可以有无限个步骤
编制计算机程序解决问题的过程有:描述问题、算法设计、编写计算机程序、调试等,其中,对算法描述不正确的是(   )。
A . 算法是解决问题的步骤集合 B . 解题的步骤是有限的 C . 算法就是解题的算式 D . 算法是可以被表述和实现
以下不是算法的特征是(     )
A . 有穷性 B . 数据输出 C . 可行性 D . 不确定性
小明的支付宝帐号密码忘记了,但他还零星记得有关于密码的一些信息:

①密码是八位数字,前两位为19

②最后两位数字是91

③能被77和133整除

程序界面如图所示,单击“找回密码”按钮(Command1)后,可能的密码显示在列表框List1中。

解决此问题的相应的程序如下:

Private Sub Command1_Click()

    Dim i As Long, s As Long

    For i = 0 To 9999

        s =  ①                  's表示该八位数密码

        If    ②   Then            '符合密码的条件,s能被77和133整除

            List1.AddItem Str(s)

        End If

    Next i

End Sub

  1. (1) 在应用程序界面设计时,添加“List1”对象用于显示可能的密码,应使用如图所示的“控件工具箱”中的(填写相应的编号)。
  2. (2) 将窗体Form1上显示的文本“Form1”改为“寻找密码”,可在其属性窗口中将属性的属性值修改为“寻找密码”。
  3. (3) 解决此问题的算法是。(填:枚举算法/解析算法/查找算法)
  4. (4) 在程序下划线处,填入适当的语句或表达式,把程序补充完整:

     ② 

班长为合唱比赛准备礼物,预算总金额有n元钱,预计购买p件礼物,每件礼物对应有商品编号、单价、数量和喜爱度。礼物不可分割,每人至多一份,班长希望每位获得礼物的同学都尽可能喜爱获得的礼物。

按上述要求,编写VB程序,功能如下:在文本框Text1中输入预计礼物数,在文本框 Text2中输入总金额,单击“计算”按钮Command1,在列表框List1中显示各类商品的编号、单价、数量、喜爱度,以及最佳购买方案、剩余金额和总喜爱度,若有多种最佳方案,则输出第一个找到的方案信息,如图a所示。

图a

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

    Const m = 4          '有 m 种商品

    Dim sph(1 To m) As String      '商品号

    Dim dj(1 To m) As Single      '单价

    Dim sl(1 To m) As Integer      '数量

    Dim xa(1 To m) As Integer      '喜爱度

    Dim hh(1 To m * 10) As Integer      '每件商品对应的货号

    Dim p As Integer,n As Integer,nc As Integer      'p个朋友,n元钱,共nc件商品

    Dim zxa As Integer         '总喜爱度为每件购买商品的喜爱度*购买数量的总和

    Private Sub Form_Load()

        '各商品的商品号、单价、数量、喜爱度分别存入数组 sph、dj、sl 和 xa 并输出,代码略

    End Sub

    Private Sub Command1_Click()

        Dim goumai(1 To m * 10) As Integer

        Dim i As Double,j As Integer,k As Integer,t As Integer

        Dim fs As Integer,je As Integer,maxi as Integer,maxje As Integer,maxzxa As Integer

        p = Val(Text1.Text): n = Val(Text2.Text)

        nc = 0

        For i =1 To m

            For j =1 To sl(i)

                nc = nc + 1: ①

            Next j

        Next i

        For i =0 To 2^ nc - 1

            t = i

            For j =1 To nc

                goumai(j) =②

                t = t \ 2

            Next j

            fs = 0: je = 0: zxa =0       '初始化份数,金额,总喜爱度

            For j =1To nc

                fs = fs + goumai(j): je = je + dj(hh(j)) * goumai(j): zxa = zxa + xa(hh(j)) * goumai(j)

            Next j

            If fs = p And ③ Then maxi = i: maxje = je: maxzxa = zxa

        Next i

        '输出maxi对应的购买方案,代码略

        If maxje >0 Then List1.AddItem "剩余金额:" & CStr(n - maxje) & " 总喜爱度:" & CStr(maxzxa)

        Else

            List1.AddItem "钱太少"

        End if

    End Sub

  2. (2) 根据题意,现有4种商品对应的信息如图b所示,若预算总金额为400元,预计购买10件礼物,则图中购买方案中三种商品的购买数量分别为(填数字,中间用逗号分隔)。

    图b

若执行a=(-1)^0.5,则该执行步骤违反了算法的_________。(   )
A . 有穷性 B . 确定性 C . 可行性 D . 有0个或多个输入
算法必须有输入,也必须有输出,而且可以有多个输入输出