某学校要进行年级优秀生表彰,需要对n人的优秀生单独排位置,每行m人。排队方阵规则:第1行从左向右坐,第2行从右向左坐,第3行从左向右坐,第4行从右向左坐……不断重复。最后一行如果人数不满m人,一律从左往右坐。VB程序功能如下:Text1输入m的值,确定每行坐的人数,单击按钮后,在List2列表框中显每位同学的位置,在List3列表框中显示每位同学的4位数位置编号(行号+列号),如下图所示。实现上述功能的VB代码如下:
依据上述描述设计如下VB程序:
Dim xh(1 To 100) As Integer , xm(1 To 100) As String, cj(1 To 100) As Integer Dim n As Integer, m As Integer
Private Sub Form_Load()
'本过程从数据库依次读取n位同学的序号、姓名及成绩,然后按成绩降序排序,将学生序号、姓名成绩存储在数组xh、xm、cj中,结果显示在List1中,
End Sub
'显示每位同学的位置
Private Sub Command1_Click()
Dim wz As String
m=Val(Text1.Text)
For i = 1 To n \ m
For j = 1 To m
If ① Then
wz = wz + xm((i - 1) * m + j) + " "
Else
wz=xm((i-1) * m + j)+" "+wz
End If
Next j
List2.AddItem wz
wz =" "
Next i
If n Mod m <> 0 Then
For i= To n ‘加框处改错
wz = wz + xm(i) + " "
Next i
List2.AddItem wz
End If
End Sub
'显示每位同学的位置编号
Private Sub Command2_Click()
Dim zu As Integer
Dim ha As String, hb As String
List3.AddItem "序号" & vbTab & "姓名" & vbTab & "位置" 'vbTab 用于字符对齐
For i = 1 To n
zu = ②
ha = Trim(str(zu))
If Len(ha) = 1 Then ha = "0" + ha
If zu Mod 2 = 0 And zu <= n \ m
Then hb = ③
Else
hb = Str(i - m * (zu - 1))
End If
hb = Trim(str(hb))
'Trim 函数功能是去除字符空格
If Len(hb) = 1 Then hb = "0" + hb
List3.AddItem str(i) & vbTab & xm(i) & vbTab+ ha + hb
Next i
End Sub
请回答下列问题:
(1)
在设计程序界面时,要清空文本框中的显示内容,应修改文本框的属性。
(2)
程序中加框处代码有误,请改正。
(3)
请在①②③划线处填入适当的代码。
① ② ③
答案: 【1】Text
(n\m)*m+1
【1】i Mod 2 = 1 或 i Mod 2 <> 0【2】(i - 1) \ m + 1【3】Str(m + 1 - (i - m * (zu - 1))) 或 Str(1 - i + m * zu)