题目

火柴游戏:有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) 由代码可知,“计算”按钮的对象名是。 (2) 程序加框处代码有错,请改正。 (3) 请在划线处填入合适的代码。 ① ②  答案: 【1】ok k=0 【1】n = n - i【2】a(n) 或 a(n)=true
信息技术 试题推荐
最近更新