题型:综合题 题类:常考题 难易度:困难
【bj】高中信息技术综合库——循环结构
某VB应用程序的功能如下:程序运行时在列表框List中依次显示数据库表“info”中每个人的编号、每天的走路步数,单击“计算”按钮Command1后,在List2中依次显示每个人的编号和每个人平均走路步数(平均走路步数=三天的走路总步数/3),程序的运行结果如图所示。
代码如下:
Dim b(1 To 100)As String '定义存储编号的数组b
Dim m(1 To 100)As single '定义存储第一天的走路步数的数组m
Dim s(1 To 100)As single '定义存储第二天的走路步数的数组s
Dim w(1 To 100)As single '定义存储第三天的走路步数的数组w
Dim p(1 To 100)As Single '定义存储平均步数的数组p
Dim n As Integer '定义存储人数的变量n
Private Sub Command1_Click()
For i=1 To
p(i)=(m(i))+s(i)+w(i))/3
Next i
List2. Clear
For i=1 To n '在List2中显示每个人的编号和平均步数
List2. AddItem b(i)+ "平均走路步数为"+ +"步"
Next i
End Sub
Private Sub Form_Load()
Dim conn As New ADOD
A.Connection '定义 Connection对象实例conn
Dim rs as New adode. Recordset '定义Recordset对象实例rs
conn. Connection String="provider= Microsoft. ACE OLEDB 12.0; DATA Source=" & App. Path & "\zoulu. accdb"
conn Open
rs. ActiveConnection=conn
rs Open "Select*From info"
n=0
Do While not rs.EOF
n=n+1
b(n)=rs. fields("id")
m(n)=rs. fields("mon")
s(n)=rs. fields("sue")
w(n)=rs. fields("wed")
rs. MoveNext
Loop
rs Close
conn. Close
Set conn=Nothing
Set conn= Nothing
List1. Clear
For i=1 To n '在 List1中显示每个人的编号、每天的走路步数
List1. AddItem b(i)+" "+Str(m(i))+" "+Str((i))+" "+Str(w(i))
Next i
End Sub
请回答下列问题:
下标 |
1 |
2 |
3 |
4 |
5 |
值 |
5 |
3 |
3 |
2 |
4 |
第一步:统计数组 a 中每个值 a(i)出现的次数,存入 b(a(i)),统计完成后数组 b 的情况如下:
下标 |
1 |
2 |
3 |
4 |
5 |
值 |
0 |
1 |
2 |
1 |
1 |
第二步:从前向后,依次使数组 b 中的每个值等于其与前一项之和,这样数组 b(a(i))就代表了数组 a 中小于或等于 a(i)的元素个数,完成第二步后数组 b 如下:
下标 |
1 |
2 |
3 |
4 |
5 |
值 |
0 |
1 |
3 |
4 |
5 |
第三步:从后往前,依次将数组a中元素填入数组c中,将数组元素a(i)放在数组c的第b(a(i))项,如元素a(1)=5,应该放在数组c的b(5)位(即c(5))。每放一个元素就将b(a(i))递减;完成第三步后,数组c如下所示,已经完成升序排序,且相对位置不变,即原来a(2)的值3仍然在a(3)的值3前面。
下标 |
1 |
2 |
3 |
4 |
5 |
值 |
2 |
3 |
3 |
4 |
5 |
程序运行界面如右图所示:
实现上述功能的VB程序如下,回答以下问题:
试题篮