图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
相似题推荐
【推荐1】编写VB程序,实现如下功能:在文本框Text1、Text2中分别输入一个正整数,单击“计算累加和”按钮(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 ②
Sum = Sum + i
③
Next i
Label3.Caption = "从" & x1 & "到" & x2 & "之间所有奇数的累加和=" & Str(Sum)
End Sub
(1)通知中包含的空格,标点符号等按原格式输出
(2)通知中涉及到字母的内容,所发文件的英语单词全部都是倒序的。如:This is a dog! 通知显示内容为: sihT si a god!
(3)通知中涉及到数字的内容, 把本组数字的最后一位移动到第一位,例如原文为 1234,通知显示内容为:4123
小王编写了一个VB程序,实现加密功能,在文本框 Text1中输入原文,单击“加密”按钮Command1 后,在文本框Text2中显示加密后的密文。程序运行界面如图所示。实现上述功能的VB程序如下,请回答下列问题:
(1)若要修改按钮 Command1 上显示的文字,应修改的属性名是
(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
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
LoopText2.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 FunctionFunction sz(s As String) As Boolean
sz = False
If
sz = True
End If
End Function1)上靠,例如退的房间号为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),(6,5);
小王依据上述描述设计了如下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
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