枚举算法及程序实现 知识点题库

编写“构造字符串”程序,实现如下功能:输入不重复的N个字符(2≤N≤5),构造由该N个字符(允许重复)组成的N位的字符串,输出所构造的字符串及构造的方法种数。程序运行界面如图所示。

实现上述功能的VB代码如下:

Private Sub Command1_Click() Dim a(0 To 4) As String Dim b(0 To 4) As Integer

Dim s As String, r As String

Dim i As Integer, j As Integer, k As Integer, c As Integer, n As Integer

List1.Clear

s = Text1.Text :   n = Len(s)

If         Then    '选填 Label1.Caption = "数据输入有误!"

Exit Sub   '退出 End If

For i = 0 To n - 1

a(i) = Mid(s, i + 1, 1) b(i) = 0

Next i c = 0

For i = 1 To n ^ n r = ""

For j = 0 To n - 1

        

Next j

c = c + 1 List1.AddItem r k = 0

b(k) = b(k) + 1

Do While b(k) = n And k < 4 b(k) = 0

        

b(k) = b(k) + 1 Loop

Next i

Label1.Caption = "构造字符串的方法共计" + Str(c) + "种。" End Sub

Function test(s As String) As Boolean ‘用于判别是否存在重复的字符,代码略

‘若无重复,则返回True,否则返回False

End Function

请回答下列问题:

  1. (1) 结合程序代码,采用图中的数据,则所构造的第27种字符串为
  2. (2) 划线①处应填      (单选,填字母)。
    A . Not (test(s) And 2 <= n <= 5) B . test(s) And n >= 2 And n <= 5 C . test(s) = False Or n < 2 Or n > 5
  3. (3) 请在划线②③处填入合适的代码。

     ③ 

两个整数的平方差称为好数,如 ,,按从小到大的次序,则第一个好数是3。编写VB程序代码,求出第n个好数是多少。实现如下功能:在文本框Text1中输入要求的第几个好数n,点击“计算”按钮Command1,则在Label2上显示结果,程序运行界面如下图所示:

  1. (1) 若要在Text1中填写序数为100,则应修改Text1对象的 属性
  2. (2) 为了实现以上程序功能,使程序正常运行,请完善以下两处代码。

    Private Sub Command1_Click()

     Dim n, k, i ,sAs Integer

     s = Val(Text1.Text)  :  k = 2

     Do While n < s

        For i = 1 To k \ 2

            If k Mod i = 0 Then

               

                If (m + i) Mod 2 = 0 And (m - i) Mod 2 = 0 Then

                    n = n + 1

                    Exit For

                End If

            End If

        Next i

        k = k + 1

     Loop

     Label2.Caption = "第" + Text1.Text + "个好数是" +

    End Sub

  3. (3) 由上述算法可知,数字21是第个好数。
一个十进制整数的二进制表示中,如果数字“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 . 根据三个系数a、b、c的值,求一元二次方程ax2+bx+c=0的解 B . 找出一串钥匙(30把)中所有能打开某一实验室门的钥匙 C . 将10个评委的打分按由大到小的顺序进行排序 D . 已知5个电阻阻值,求它们并联后的阻值
实现枚举算法一般采用(     )的算法结构模型。
A . 循环套循环 B . 分支套循环 C . 循环套分支 D . 分支套分支