当前位置: 高中信息技术 / 综合题
  • 1. (2020·柯桥会考) 火柴游戏:有n根火柴,第1次取1根,第2次取2根,第i次取i根,当剩余火柴数为0时,不用添加火柴(即k=0),游戏结束。如果剩余火柴数不为0,但不够下一次取,此时添加k(k≥1)根火柴,在剩余火柴中再从1根开始取,直到能取完为止,求k的最小值。

    例如:n=3时,第1次取1根,第2次取2根,此时正好取完,无须添加火柴,k=0;

    例如:n=8时,第1次取1根,第2次取2根,第3次取3根,第4次要取4根,但剩余2根不够取。则加上1根,剩余3根,再从1根开始取,即第4次取1根,第5次取2根,剩余火柴为0,游戏结束,得k=1。

    又如:n=4时,第1次取1根,第2次取2根,第3次不够取,若加上1根,剩余2根,再从1根开始取,第3次取1根,剩余1根不够第4次取,再加1根,又是剩余2根,显然加1根永远不可能取完。所以改用每次加2根,第1次取1根,第2次取2根,第3次不够取,添加2根,第3次取1根,第4次取2根,恰好能取完,得k=2。

    编写一个VB程序可实现上述功能:在文本框Text1中输入火柴数量,单击“计算”按钮,在文本框Text2中显示最少添加数量,程序运行界面如下图所示:

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

    Private Sub ok_Click()

    Dim a(1 To 100) As Boolean, n As Integer, k As Integer, i As Integer

    n = Val(Text1.Text)

    For i = 1 To 100

        a(i) = False

    Next i

    a(n) = True

    Do While n <> 0

        i = 1

        Do While i <= n

                 ①      

            i = i + 1

        Loop

        If n = 0 Then

            Text2.Text = Str(k)

        Else

            If k = 0 Then k = 1

            n = n + k

            If       ②      Then

                k = k + 1

                n = Val(Text1.Text)

            Else

                a(n) = True

            End If

        End If

    Loop

    End Sub

    1. (1) 由代码可知,“计算”按钮的对象名是
    2. (2) 程序加框处代码有错,请改正。
    3. (3) 请在划线处填入合适的代码。

       ② 

微信扫码预览、分享更方便