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

【加试题】求孪生素数。孪生素数是指两个相邻奇数且都是素数,由于它们是最近的素数,就像孪生兄弟一样。下列Visual Basic程序用于查找100以内的所有孪生素数,其中函数f用于判断一个数是否是素数,程序运行界面如图1所示,Command1鼠标单击事件过程的流程图如图2所示。

 图1
   图2

 程序代码如下:

Private Sub Command1_Click()

  Dim i As Integer

  List1.Clear            '清除列表框内容

  For i = 3 To 97 ______

    If f(i) And     ②     Then

      List1.AddItem Str(i) + " 和 " + Str(i + 2)

    End If

  Next i

End Sub

Private Function f(x As Integer) As Boolean  '自定义函数f,返回值为逻辑型

  Dim j As Integer

  f = True

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

    If x Mod j = 0 Then

      f =     ③      '函数返回值

      Exit For           '跳出For循环

    End If

  Next j

End Function

  1. (1) 程序中加框部分的算法是(选填:解析算法/枚举算法)
  2. (2) 在程序①、②、③划线处,填入适当的语句或表达式,把程序补充完整:

    程序中①划线处应填入

    程序中②划线处应填入

    程序中③划线处应填入

在信息的编程加工过程中,(   )给出了解决问题的方法和步骤,是程序编写的基础。  
A . 分析问题 B . 算法设计 C . 编写程序 D . 调试运行
古希腊著名哲学家毕达哥拉斯把1,3,6,10,15,21,28……称为三角形数。这些三角形数序列有一定的规律,后一个数与前一个数的差刚好构成一个等差数列2,3,4,5,6,7……,所以第2位的“3”等于序列的第1位数“1”加上等差数“2”,第3位的6等于序列的第2位数“3”加上等差数“3”,……,第n位数m等于序列的第n-1位数加上等差数n。小金利用这个规律编写出了一个判断三角形数的VB程序,在文本框Text1中输入一个大于1的正整数,单击”判断”按钮Command1,在标签label1中显示判断结果。程序设计界面如图所示。
  1. (1) 在设计程序界面时,要清空标签中显示的内容“Label1”,应修改该标签的属性。
  2. (2) VB程序代码如下,请在画线处填入合适代码。

    Private Sub Command1_Click()

      Dim n As Integer,S As Integer

      s=0

      n=Val(Text1.Text)

      If n>1 Then

          For i=1 To n

              s=    ①     

              If n=s Then

                  Label1.Caption=Str(n)+”是一个三角形数。”

                  Exit For

                     ②   

                   Label1.Caption=Str(n)+”不是一个三角形数。”

                    Exit For

                      End If

                   Next i

    Else

                   Label1.Caption=”请输入一个大于1的正整数”

    End If

    End Sub

     ② 

  3. (3) 若文本框Text1中输入的内容为“27”,单击按钮Command1后,标签Label1中显示的内容是
VB程序设计。某微群采用问题验证的加入方式,如图1所示:

1

徐明设计了一个VB程序用于寻找这个以211开头、可被2012整除的6位数。其算法流程图如图2所示,程序界面如图3所示,程序的代码编辑窗口如图4所示。

2


  1. (1) 图2所示流程图中采用的算法为(填:解析算法 / 枚举算法)。
  2. (2) 在图3所示窗体中,创建label2对象的方法正确的是          (填字母)。
    A . 双击工具箱中的“ ”控件 B . 单击工具箱中的“ ”控件,然后在窗体中按住鼠标左键拖曳
  3. (3) 在图3所示窗体的标题中显示 “寻找验证问题的答案” 字样,是通过修改该窗体对象的 (填:Font / Caption / Top)属性的值实现的。
  4. (4) 图4中的VB程序代码在(填:加载窗体 / 单击Label2 / 单击Command1)对象时被驱动执行。
  5. (5) 徐明在代码编辑窗口中,输入“Label2.”后出现如图5所示的信息,其中的“BackColor”是Label2的(填:事件名 / 对象名 / 属性名)。

    5

  6. (6) 图4中VB程序划线处应填写的代码为
  7. (7) 运行图4中VB程序后,弹出图6所示的出错信息提示,此时程序正执行的语句是 (填字母),改正该错误应修改的语句是(填字母)。

    6

    A.Dim k As Integer

    B.For k = 211000 To 211999

    C.Label2.Caption = Str(k)

  8. (8) 保存工程后,徐明发现结果文件夹中产生了yzwt.frm、yzwt.vbp、yzwt.vbw三个文件,其中窗体文件是
任意一个大于或等于4的偶数,都可以用两个素数之和表示,这就是哥德巴赫猜想。如:4=2+2,6=3+3,8=3+5, 10=5+5,12=5+7,98=19+79。

编写一个验证哥德巴赫猜想的VB程序:程序运行时,在文本框Text1中输入一个大于或等于4的偶数,单击“验证”按钮Command1后,如果哥德巴赫猜想验证成功,则在文本框Text2中显示“Yes”,并在列表框List1中显示用两个素数表示该偶数的等式,否则显示“No”。程序运行效果如图所示。

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

Function judge(x As Integer)As Boolean

 ‘函数judge的功能是判断整数x是不是素数,若是素数则返回True,否则返回False

 Dim j As Integer

 judge=True

 j=2

 Do While j<=x-1 And judge=True

If x Mod j=0 Then

judge=False

Else

j=j+1

End If

 Loop

End Function

Private Sub Command1_Click()

 Dim n As Integer, p As Integer, q As Integer, flag As Boolean

 n=Val(Text1.Text)

 p=1

 flag=False

 Do While  And p<n    ‘

 p=p+1

      ‘

If judge(p)And judge(q)Then

Text2.Text=“Yes”

flag=True

List1.AddItem Str(n)+“=”+Str(p)+“+”+Str(q)

  End If

 Loop

 If flag=False Then

Text2.Text=“No”

End Sub

一个十进制整数的二进制表示中,如果数字“1”的个数多于数字“0”的个数,则称该整数为A类数。如十进制整数26的二进制表示为11010,26是一个A类数。下列VB程序的功能是:寻找前1000个自然数中所有A类数,在List1中输出,并统计个数,在Text1中输出。

请在下面划线处填入合适的代码。

Private Sub Command1_Click()

  Dim i,n,s,t,k As Integer  's为A类数的个数,t为二进制数中“1”的个数,k为“0”的

  个数

  s = 0

  For i = 1To 1000

    n = i:t = 0:k= 0

    Do While n > 0

        If    ①    Then t=t+1Else k=k+1

            ②   

    Loop

    If t>k Then

      List1.Addltem Str(i)

      s = s+1

    End If

  Next i

  Text1.Text=Str(s)

End Sub

当现有的软件无法解决问题时,我们可以利用编程语言自己编制程序解决问题。下列选项中用编程来解决比较合适的是(  )
A . 将一组统计数据转换成图表显示 B . 制作二维动画 C . 用计算机修复发黄的旧照片 D . 找出所有的4位水仙花数
用计算机解决问题时,一般分为五个过程:分析问题、设计算法、编写程序、(  )及检测结果。
A . 编译程序 B . 选择程序设计语言 C . 调试运行 D . 编制程序框图
   有一种算法是把所有可能的答案一一列举,合适就保留,不合适就丢弃。这种方法称作。枚举法解决问题的一般结构:
下列关于算法特征的描述不正确的是(     )
A . 有穷性:算法必须在有限步之内结束 B . 确定性:算法的每一步必须有确切的含义 C . 输入:算法至少有一个输入 D . 输出:算法至少有一个输出
若一个三位数abc满足,abc=a3+b3+c3则称abc为水仙花数。如三位数153满足13+53+33=1+125+27=153,则153是水仙花数。以下是找出所有水仙花数的程序,请把程序补充完整。(a为百位数、b为十位数、c为个位数)

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

For i=100 To

  a=i\100

  b=

  c=i-100*a-10*b

  If Then

    Print i

  End If

Next i

不能用算法描述“输出所有完全平方数”,是因为该任务不符合算法特征中的(    )
A . 有穷性 B . 有0个或多个输入 C . 确定性 D . 有1个或多个输出
下列关于算法的特征描述不正确的是(     )。
A . 有穷性:算法必须在有限步之内结束 B . 确定性:算法的每一步必须有确切的含义 C . 输入:算法至少有一个输入 D . 输出:算法至少有一个输出
用蒙特卡洛法求圆周率PI的近似值,其算法如下:使用随机函数Rnd,随机生成两个[0,1)之间的随机数,由此构成一个投点坐标(x, y),然后根据x2+y2<=1投点是否在圆内来求PI的近似值。其中总共随机投点n次,统计落点在单位圆内的点数为s,则4s/n即为所求PI的近似值。程序界面如图所示,在Text1中输入投点的个数,单机“计算”按钮,PI的近似值结果显示在Text2中。)

  1. (1) 要使得按钮的文字显示为“计算”,应该修改该对象的属性。
  2. (2) 要实现上述功能,请在划线处填入合适代码。

        Private Sub Command1_Click()

        Randomize             '随机数初始化

        Dim i As Long, n As Long, s As Long

        Dim x As Double, y As Double, z As Double

        n = Val(Text1.Text)

           ①

        s = 0

        Do While i <= n              '随机投点n次

            x = Rnd: y = Rnd

            z =       ②

            If z <= 1 Then

                s = s + 1

            End If

            i = i + 1

        Loop

    Text2.Text =     ③

算法的重要特征不包括(     )
A . 有穷性 B . 可行性 C . 确定性 D . 唯一性
简单地说,算法就是解决问题的
以下特征中不是算法的重要特征的是(     )
A . 有穷性 B . 确定性 C . 可行性 D . 唯一性
编写VB程序,实现如下功能:在文本框Text1中输入一个大于1000的正整数,单击按钮Command1后会去除其中3个数字,保证余下的数字在不改变顺序的情况下其数值最大,然后在文本框Text2中输出该数。

Private Sub Command1_Click()

    Dim s As string

    Dim n As Integer, w As Integer

    s=Text1.Text

    For i=1 To 3

        n=Len(s):w=1

        For j=2 To n

            If ________ Then w=j Else Exit For

        Next j

        s=Mid(s,1,w-1)+Mid(s, w+l, n-w)

    Next i

    Text2.Text=s

End Sub

画线处的正确代码为(    )

A . Val(Mid(s,w,1))<=Val(Mid(s,j,1)) B . Val(Mid(s,j,1))<=Val(Mid(s,j+1,1)) C . Val(Mid(s,w,1))>=Val(Mid(s,j,1)) D . Val(Mid(s,j,1))>=Val(Mid(s,j+1,1))
小李忘记了自己的银行账号密码,非常着急,请帮她尽快找出密码。幸亏她还隐约记得自己的密码信息:①密码是六位数字,前面两位为31;②最后两位数字相同;③能被16和46整除。程序界面如图所示,单击“帮助找回密码”按钮Command1后,可能的密码显示在列表框List1中,实现上述功能的VB代码如下。

请回答下列问题:

  1. (1) 解决此问题的算法是(选填:枚举算法/解析算法)。
  2. (2) 在程序中划线处填入适当的代码。

    Private Sub Command1_ Click()

        Dim s As Long

        Dim iAs Integer,a As Integer,b As Integer

        For i=0 To 9999 Step

            s=310000+i

            If s Mod 46=0 Then

                a=

                b=s\ 10 Mod 10

                If a=b Then List1. AddItem Str(s)

            End If

        Next i

    End Sub

下面关于算法的错误说法是(    )
A . 算法必须有输出 B . 算法必须在计算机上用某种语言实现 C . 算法不一定有输入 D . 算法必须在有限步执行后能结束