组卷网 > 高中信息技术综合库 > 算法软件操作 > VB程序的调试
题型:操作题 难度:0.4 引用次数:36 题号:11804296
某班级学生为毕业晚会的一个男生节目设计一个仿“V”字队形,先筛选出班级里所有男生,然后将 参演的所有男生按照身高,摆出中间低两边高(先右后左)的队形,如图 1 所示。

图1
小孟同学用 VB 编写模拟“节目队形”程序,功能如下:从数据库中导入所有学生的编号、性别和 身高数据;单击“筛选并排序”Command1 按钮,筛选出所有男生的身高并按照从低到高的顺序进行排序, 结果显示在文本框 Text1 中;单击“设计队形”Command2 按钮,队形的编号结果显示在文本框 Text2 中。程序运行界面如图 2 所示。

图2
举例说明如下:
实现上述功能的 VB 程序如下,请回答下列问题:
(1)请在划线处填入合适的代码。
__________________
__________________
__________________
(2)程序代码中,加框处有错,请改正。
改正:___________________
Const n = 8
Dim h(1 To n) As Integer, num1(1 To n) As Integer, num2(1 To n) As Integer Dim sex(1 To n) As Boolean     ' 男生 sex = True,女生 sex = False
Dim i As Integer, j As Integer, m As Integer Private Sub Form_Load()
'n 名学生(包括男生和女生)的编号、性别和身高由数据库导出,分别存储在数组 num1、h 和 sex 中,代码略! End Sub
Private Sub Command1_Click() For i = 1 To n - 1
       For j = n To i + 1 Step -1
             If sex(j) = True Then
                    If   ①                 Then
                           t = h(j): h(j) = h(j - 1): h(j - 1) = t
                           t = sex(j): sex(j) = sex(j - 1): sex(j - 1) = t
                           t = num1(j): num1(j) = num1(j - 1): num1(j - 1) = t
                    End If
             End If
       Next j Next i
For i = 1 To n
       If sex(i) Then
             Text1.Text = Text1.Text + " " + Str(h(i))
       End If
       If Not sex(i) Then : Exit For          '改错
Next i
End Sub
Private Sub Command2_Click()
Dim L, R As Integer, mid As Integer
mid = Int((1 + m) / 2) L = 0: R = 0
     ②          For i = 2 To m Step 2
       R = R + 1
       num2(mid + R) = num1(i)             
       L = L + 1
       ③            Next i
For i = 1 To m
       Text2.Text = Text2.Text + " 男" + CStr(num2(i)) + "号 " Next i
End Sub
【知识点】 VB程序的调试

相似题推荐

操作题 | 较难 (0.4)
名校

【推荐1】编写VB程序,实现如下功能:在文本框Text1Text2中分别输入一个正整数,单击计算累加和按钮(Command1),在标签Label3中显示起始值与结束值之间所有奇数的和。界面如下方左图所示。

(1)在设计应用程序界面时,应使用上方右图所示“控件工具箱”中的___________(填写相应编号)添加“计算累加和”按钮。
(2)为实现上述功能,请在划线处填入合适代码。
Private Sub Command1_Click()
Dim x1 As Integer, x2 As Integer, n As Integer
Dim sum As Long
x1 = Val(Text1.Text)
x2 = Val(Text2.Text)
Sum = 0
If x1 < x2 Then n = 1 Else ___________
For i = x1 To x2 Step n
       If ___________ Then
             Sum = Sum + i
            ___________
Next i
Label3.Caption = "从" & x1 & "到" & x2 & "之间所有奇数的累加和=" & Str(Sum)
End Sub
2019-04-12更新 | 30次组卷
操作题 | 较难 (0.4)
名校
【推荐2】为防止机密通知被盗,某公司制定了网上发通知的加密要求:
(1)通知中包含的空格,标点符号等按原格式输出
(2)通知中涉及到字母的内容,所发文件的英语单词全部都是倒序的。如:This is a dog! 通知显示内容为: sihT si a god!
(3)通知中涉及到数字的内容, 把本组数字的最后一位移动到第一位,例如原文为 1234,通知显示内容为:4123
小王编写了一个VB程序,实现加密功能,在文本框 Text1中输入原文,单击“加密”按钮Command1 后,在文本框Text2中显示加密后的密文。程序运行界面如图所示。

实现上述功能的VB程序如下,请回答下列问题:
(1)若要修改按钮 Command1 上显示的文字,应修改的属性名是_____________(单选,填字母:A.Text/B.Caption /C.List)
(2)实现上述功能的VB程序代码如下,请在划线处填入合适的代码
(3)程序中加框处代码有错,请改正
Private Sub command1_Click()
Dim s As String, ch As String, rv As String, rv1 As String
Dim i As Integer, j As Integer, k As Integer
s = Text1.Text
rv = ""
i = 1
Do While True

ch = Mid(s, i, 1)

Do While __________ And i <= Len(s)

rv = rv + ch

i = i + 1

ch = Mid(s, i, 1)

Loop

j = i

ch =_______①_________

Do While sz(ch) And j <= Len(s)

j = j + 1

If j > Len(s) Then Exit Do

ch = Mid(s, j, 1)

Loop

rv1 = ""

rv1 = Mid(s, j - 1, 1) + Mid(s, i, j - i - 1)

rv = rv + rv1

i =_______②_______

If i > Len(s) Then Exit Do

Do While zf(ch) And j <= Len(s)

j = j + 1

If j > Len(s) Then Exit Do

ch = Mid(s, j, 1)

Loop

rv1 = ""

For k = i - 1 To j - 1

rv1 = Mid(s, k, 1) + rv1

Next k

rv = rv + rv1

If j <= Len(s) Then rv = rv + Mid(s, j, 1)

i = j + 1

If i > Len(s) Then Exit Do

Loop
Text2.Text = rv
End Sub
Function zf(s As String) As Boolean

zf = False

If s >= "A" And s <= "Z" Or s >= "a" And s <= "z" Then

zf = True

End If

End Function
Function sz(s As String) As Boolean

sz = False

If __________③____________Then

sz = True

End If

End Function
2022-01-21更新 | 39次组卷
操作题 | 较难 (0.4)
【推荐3】酒店房间管理:酒店房间(房间数小于10000)编号按1、2、3…连续编号,老板对于没有出租的房子使用如下的方法来登记管理。连续的空房间,登记第一间的编号和连续的空房间数,比如空房间1,2, 6,7,8,10,则登记3条记录,分别为(1   2),(6   3),(10   1),某旅客退房了,需要把这房子也登记上去,有四种情况需要处理:
1)上靠,例如退的房间号为3,则原来登记的3条记录变成(1 3, (6   3),(10   1);
2)下靠,例如退的房间号为5,则原来登记的3条记录变成(1   2), (5 4, (10   1);
3)上下不靠,例如退的房间号为4,则登记的记录数变成4条(1   2)   ,(4 1, (6   3),(10   1);
4)上下靠,例如退的房间号为9,则登记的记录数变成2条(1,2),65
小王依据上述描述设计了如下VB程序。请回答下列问题:
(1)当登记的记录有3条,分别为(1,4),(6,2),(10,3),现在某旅客退掉5号房间,则登记的记录变成_______________________________
(2)请在划线处填入合适的代码。

Const n = 5000

Dim a(0 To n) As Integer   'a(i)保存第i条记录的开始房间号

Dim b(0 To n) As Integer   ' b(i)保存第i条记录的房间数

Dim c As Integer, k As Integer, sp As Integer   'k为原始记录数

'读取原始k条记录的数据,依次存入a(1),b(1),a(2),b(2)…a(k),b(k),代码略

'为了程序处理方便,虚设了下面2条记录

a(0) = 0 : b(0) = 0 : sp = k + 1 :a(sp) = 10000 : b(sp) = 0

Private Sub Command1_Click()

Dim i As Integer

c = Val(Text1.Text)   'c为退掉的房间号

i = 1

Do While a(i) < c     '查找房间c,应该登记在某位置

   i = i + 1

Loop

i = i - 1

'下面为处理退房登记问题

If a(i) + b(i) = c Then

       If __________ Then     '第4种情况,上下靠

          b(i) = b(i) + 1 + b(i + 1)

          For j = i + 1 To sp - 1

               a(j) = a(j + 1) : b(j) = b(j + 1)

          Next   j

          sp = sp - 1

     Else                                     '第1种情况,上靠

          b(i) = b(i) + 1

     End If

ElseIf   c + 1 = a(i + 1) Then   '第2种情况,下靠

     a(i + 1) = c : b(i + 1) = b(i + 1) + 1

Else                                          '第3种情况,上下不靠

     For j =_____________________

          a(j) = a(j - 1) : b(j) = b(j - 1)

     Next j

     a(i + 1) = c : b(i + 1) = 1 : sp = sp + 1

End If

‘下面为输出登记的记录,不包括虚设的两条记录

For i =1 to _______

     List3.AddItem "第" & Str(i) & "记录(" & Str(a(i)) & "," & Str(b(i)) & ")"

Next i

End Sub

2019-05-19更新 | 35次组卷
共计 平均难度:一般