1. 【加试题】神性的数学黑洞数6174。一个任意的四位正整数(四位数字完全相同除外),将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。如取四位数5462,按以上方法作运算如下:

①6542-2456=4086  ②8640-0468=8172  ③8721-1278=7443  ④7443-3447=3996

⑤9963-3699=6264  ⑥6642-2466=4176  ⑦7641-1467=6174

编写程序实现实现上述功能。从文本框Text1中输入一个任意的数字不完全相同的四位正整数,在文本框Text2中输出掉进黑洞的步数。实现上述功能的VB代码如下,但加框处代码有错,请改正:

Private Sub Command1_Click()

 Dim a(1 To 4) As Integer, c As Integer, t As Integer

 Dim x As Integer, y As Integer, i As Integer, j As Integer

x = Val(Text1.Text)

c = 0

 Do While x <> 6174

 For i = 1 To 4     '把四位正整数x的每一位数字取出并存放到数组a中

a(i) = x Mod 10

       ' (1)

Next i

 For i = 1 To 3

  For j = i + 1 To 4

  If  Then  ' (2)

t = a(i): a(i) = a(j): a(j) = t

End If

  Next j

 Next i

 x = a(1) * 1000 + a(2) * 100 + a(3) * 10 + a(4)

 y = a(1) + a(2) * 10 + a(3) * 100 + a(4) * 1000

 x = x - y

 c = c + 1

 Loop

 Text2.Text = Str(c)

End Sub

  ⑵

【考点】
解析算法及程序实现;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 困难
能力提升
变式训练
拓展培优
真题演练
换一批
3. “字符洗牌”程序模拟扑克洗牌的操作,为了打乱牌序,把手上的扑克牌中间抽一部分放到最上面,完成一次洗牌(如字符串“1234ABCD”,若把中间的第3个到第5字母抽出并保持原来的顺序放到最前面,则一次洗牌操作后字符串变成“34A12BCD”),也可以把扑克牌分成上下两部分,把下面的部分放置到上面(如字符串“1234ABCD”,把第3个字符到最后一个字符移到前面,变成“34ABCD12”),多次重复做这个动作,就能达到洗牌的目的,效果如图所示。

(1) 若要把窗体的标题名称由“Form1” 改为“字符洗牌”,应改变窗体的属性。
(2) 完成上述功能的程序代码如下,请在划线处填入合适的代码

Private Sub Command1_Click()

    Dim r As Integer, k1 As Integer, k2 As Integer, r As Integer

    Dim s As String, n As Integer

                       '从文本框TxtIn中获取字符串

    Randomize

    r = Int(Rnd() * 10) + 1   '随机生成洗牌次数

    n = Len(s)

    Do While r >= 1        '洗牌操作

        k1 = Int(Rnd() * (n - 2)) + 2

        k2 = Int(Rnd() * (n - k1 + 1)) + k1

        s =   + Mid(s, 1, k1 - 1) + Mid(s, k2 + 1, n - k2)  

        r = r - 1

    Loop

        '输出结果

End Sub

(3) 若加框处的语句改为TxtOut.Text = Str(s),则运行程序时会发生的错误消息为_________ A. B. C. D.
综合题 困难