'数组f( )到f( )赋初值为0,代码略
n = Val (Text1. Text)
For key=1 To n
i=1:j=n:c=0
Do While i<=j
m=(i+j)\2
c=c+1
If key=m Then
f(c) = f(c) + 1: Exit Do
ElseIf key > m Then
i=m+1
Else
j=m-1
End If
Loop
Next key
在文本框Text1中输入5,执行该程序段后,f(1)到f(4)各元素值可能的是( )
请回答下列问题:
①温州②甘孜州③黔东南州④湘西自治州⑤万州区
'n和m是常量,分别表示节目数和评委数,代码略
Dim df(1 To m * n) As Integer
Private Sub Form Load()
'从数据库中读取n个节目的m个评委的评分、依次存入数组df中,并显示在List1中,代码略。
End Sub
Private Sub Command1_ Click ()
Dim i As Integer, j As Integer, cnt As Integer
Dim sum As Integer, max As Integer, min As Integer
Dim index(1 To n) As Integer, score(1 To n) As Single
For i=1 To n
x=(i-1)*m+1
y=i*m
sum=0:cnt=0
For j=x To y
If df(j)=0 Then cnt=cnt+1
sum =
Next j
max = df(x): min = df(x) '统计每个节目的最高分与最低分
For j=x+1 To y
If df(j) > max Then max = df(j)
If df(j)<>0And()Then min=df(j)
Next j
If cnt<m-2 Then score(i)=
index(i) = i
Next i
For i=1 To n
For j=nToi+1Step -1
If Then
t = index(j): index(j) = index(j- 1): index(j- 1) = t
End If
Next j
Next i
For i=1 To n
List2.AddItem"节目" & index(i) & "得分:" & Int (score (index(i))*100)/100
Next i
End Sub
用数组存储各节点信息,节点A、B、C、D、E、R、G、H分别编号为1~8。数值1表示表格中起始节点(第一列)可达到达节点(第一行),数值0表示无法抵达。
到达节点 起始节点 |
A(1) |
B(2) |
C(3) |
D(4) |
E(5) |
F(6) |
G(7) |
H(8) |
A(1) |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
B(2) |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
C(3) |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
D(4) |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
E(5) |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
F(6) |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
G(7) |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
H(8) |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
编写VB程序,实现上述功能。运行程序,在列表框List1中显示所有节点信息,在文本框Text1输入起点,文本框Text2中输入终点,单击“查询”按钮Command1,在文本框Text3中显示经过节点数最少的线路图。程序界面如图b所示。
'n是常量,代码略
Dim a(1 To n*n) As Integer
Dim pre(1 To 100) As Integer
Dim q(1 To 100) As Integer
Private Sub Form_ Load()
'读取n*n个节点之间的信息,存储在数组a中,a(i-1)*n+j)=1表示i节点到j节点可达。
End Sub
Private Sub Command1 _Click()
Dim st As Integer, ed As Integer
Dim flag As Boolean, res As String, cur As Integer
Dim tail As Integer, head As Integer
'初始化pre和q数组,代码略。
Text3. Text = ""
st = Asc(Text1. Text) - 64
ed = Asc(Text2. Text) - 64
head=1:tail=2
q(1) = st: flag = False
Do While head <> tail And Not flag
cur = q(head)
head=head+1
tail = qInfo(tail, cur)
If Then flag = True
Loop
If flag Then
res =""
Do While ed <> 0
res = "-->"+ Chr(ed + 64) + res
Loop
Text3.Text = Mid(res, 4)
End If
End Sub
'记录与c节点连通的节点信息
Function qInfo(tail As Integer, c As Integer) As Integer
Dim j As Integer
For j=1 To n
If j <>c Then
If a((c- 1) *n+j) = 1 And pre(j) = 0 Then
q(tail) = j
pre(j) = c
End If
End If
Next j
qInfo = tail
End Function