【 加试题】 在一次晚会上,一位魔术师掏出一叠扑克牌,取出其中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
在画线处填入适当的语句或表达式,将程序补充完整。
①____________ ②__________
③____________ ④__________
代码如下:
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
在画线处填入适当的语句或表达式,将程序补充完整。
①
③
更新时间:2020-02-24 23:50:42
|
【知识点】 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
程序①处的代码是
程序②处的代码是
程序③处的代码是
实现上述功能的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
程序①处的代码是
程序②处的代码是
程序③处的代码是
您最近一年使用:0次
操作题
|
适中
(0.65)
名校
【推荐2】有一组正整数,要求仅对其中的偶数进行降序排序。排序后偶数在前,奇数在后。排序示例如下。
程序运行界面如下图所示。
实现上述功能的 VB 程序如下,但加框处代码有错,请改正。
Const n = 8
Dim a(1 To n) As Integer Private Sub Form_Load()
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
'①
Loop
End Sub
程序运行界面如下图所示。
实现上述功能的 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
您最近一年使用:0次
操作题
|
适中
(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中显示的结果为_________ 。
(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
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中显示的结果为
您最近一年使用:0次