组卷网 > 高中信息技术综合库 > 算法软件操作 > VB程序的调试
题型:操作题 难度:0.65 引用次数:14 题号:9654933
【 加试题】 在一次晚会上,一位魔术师掏出一叠扑克牌,取出其中13张黑桃,预先洗好牌,把牌面朝下,对观众说:“我不看牌,只数一数就能知道每张牌是什么?”魔术师口中念1,将第一张牌翻过来看正好是A;魔术师将黑桃A 放到桌子上,继续数手里的余牌,第二次数1,2 将第一张牌放到这叠牌的下面,将第二张牌翻开,正好是黑桃2,也把它放在桌子上。第三次数1,2,3,前面两张牌放到这叠牌的下面,取出第三张牌,正好是黑桃3,这样依次将13 张牌翻出,准确无误。现在的问题是,魔术师手里牌的原始顺序是怎么样的呢?运行结果如下图所示。

代码如下:
Private Sub Command1_Click()
Dim a(13), i, j, n As Integer ' 定义变量
Form1.Cls
i = 1 ' 将变量i 的值为1
Do While i <= 13 ' 当i 的值小于等于13 时循环
 Do While True
 j = j + 1
  If j > 13 Then                                            ' j 的值大于13 时,将其重置为1
  If a(j) = 0 Then n = n + 1                       ' 如果该位置元素为0,则n 1
  If n = i Then
                                       ' i 的值放入数组指定的位置中
   n = 0 ' 计数器重新为0
   Exit Do
  End If
 Loop
 i =                               ' 计数器i 1
Loop
Label1.Caption = " 原来牌的顺序是:"
For k = 1 To 13
 Label2.Caption = Label2.Caption + ④                          ' 输出扑克牌的原有顺序
Next k
End Sub
在画线处填入适当的语句或表达式,将程序补充完整。
______________________
______________________
【知识点】 VB程序的调试

相似题推荐

操作题 | 适中 (0.65)
【推荐1】小明设计了一个VB程序(界面如图所示),随机产生n(n<=100)个大于等于a(a<=100)且小于等于b(b<=100)的整数,并在列表框List1中降序显示。

实现上述功能的VB代码如下:
请在划线处填入合适代码。
Private Sub Command1_Click()
Dim a As Integer, b As Integer
Dim n As Integer, t As Integer
Dim m(1 To 100) As Integer
a = Val(Text1.Text)
b = Val(Text2.Text)
n = Val(Text3.Text)
If a > b Then t =a: a =b: b = t
Randomize

For i =2 To n
m(i) =Int(Rnd * (b - a + 1)) + a
If m(i) > m(i - 1) Then

For j =i - 1 To 1 Step -1
If temp < m(j) Then Exit For
m(j + 1) = m(j)
Next j

End If
Next i
For i =1 To n
List1.AddItem Str(m(i))
Next i
End Sub
程序①处的代码是              
程序②处的代码是                
程序③处的代码是                       
2017-07-14更新 | 71次组卷
操作题 | 适中 (0.65)
名校
【推荐2】有一组正整数,要求仅对其中的偶数进行降序排序。排序后偶数在前,奇数在后。排序示例如下。

程序运行界面如下图所示。
实现上述功能的 VB 程序如下,但加框处代码有错,请改正。
Const n = 8
Dim a(1 To n) As Integer Private Sub Form_Load()

'排序前数据存储在数组 a 中,并在文本框 Text1 中显示代码略


End Sub
Private Sub Command1_Click()
Dim k As Integer, i As Integer, j As Integer, t As Integer
i = 1
Do While i <= n - 1

k = i

For j = i + 1 To n


   '①

k = j

ElseIf a(k) Mod 2 = 0 And a(j) Mod 2 = 0 And a(j) > a(k) Then

k = j

End If

Next j

If k <> i Then

t = a(k): a(k) = a(i): a(i) = t

End If

   '②


Loop

'依次输出排序后的数据。代码略


End Sub
2019-05-19更新 | 56次组卷
操作题 | 适中 (0.65)
【推荐3】编写“十六进制加法”程序。程序运行时,在文本框Text1和文本框Text2分别输入两个十六进制数,单击“计算”按钮后在文本框Text3上输出两个十六进制相加后的结果。程序运行如图所示。

(1)观察代码,触发代码执行的事件名是________________________
(2)实现上述功能的VB程序如下,请在划线处填人合适的代码。
Private Sub Cmd1_Click()
       Dim a1 As String, a2 As String, sum As String, t As String
       Dim b1 As Integer, b2 As Integer
       Dim dist As Integer, x As Integer, jw As Integer
       a1 = Text1.Text: a2 = Text2.Text: sum = ""
       dist = Len(a1) - Len(a2)
       If dist < 0 Then
             t = a1: a1 = a2: a2 = t
             ___________________
       End If
       For i = 1 To dist
             a2 = "0" + a2
       Next i
       jw = 0
       For i = __________________________
             If Mid(a1, i, 1) >= "A" And Mid(a1, i, 1) <= "F" Then
                    b1 = Asc(a1) - 55
             Else
                    b1 = Val(Mid(a1, i, 1))
             End If
             If Mid(a2, i, 1) >= "A" And Mid(a2, i, 1) <= "F" Then
                    b2 = Asc(a2) - 55
             Else
                    b2 = Val(Mid(a2, i, 1))
             End If
             x = b1 + b2 + jw
             jw = x \ 16
             If   __________________ Then
                    sum = Chr(x Mod 16 + 55) + sum
             Else
                    sum = Str(x Mod 16) + sum
             End If
       Next i
       If jw = 1 Then sum = "1" + sum
       Text3.Text = sum
End Sub
(3)若将代码中加框处代码删除,则图中Text3中显示的结果为_________
2019-05-19更新 | 34次组卷
共计 平均难度:一般