For i = 1 To 10
a(i) = Int(Rnd() * 50 + 30)
Next
For i = 1 To 10
sum = sum + a(i)
Next
For i = 1 To 10
For j = 1 To 10 - i
If a(j) > a(j + 1) Then
temp = a(j + 1)
a(j + 1) = a(j)
a(j) = temp
End If
Next j
Next i
max = a(10)
avr = sum / 10
最大值是max,平均值是avr
'二分法只能对有序数列查找,所以要先排序,再查找,Private Sub Command1_Click()
Dim data(1 To 100) As Integer
Dim i%, num%
Randomize
For i = 1 To 10
data(i) = Int(Rnd * (80 - 30 + 1) + 30)‘30-80随机数
Print data(i)
Next
num = Val(InputBox("请输入一个数"))
Selectionsort data '排序
i = BinSearch(data, num) '二分函数查找
If i <>-1 Then
MsgBox "找到该数" &i
Else
MsgBox "该数不在数组中"
End If
End Sub
'二分函数
Public Function BinSearch(ByRef data() As Integer, ByVal num As Integer) As Long
Dim lngLow As Long
Dim lngHigh As Long
Dim lngMiddle As Long
lngLow = LBound(data)
lngHigh = UBound(data)
While (lngLow <= lngHigh)
lngMiddle = (lngLow + lngHigh) / 2
If data(lngMiddle) = num Then
BinSearch = lngMiddle
Exit Function
Else
If data(lngMiddle) >num Then
lngHigh = lngMiddle - 1
Else
lngLow = lngMiddle + 1
End If
End If
Wend
BinSearch = -1 '查找失败
End Function
'排序
Sub Selectionsort(data() As Integer)
Dim i As Integer
Dim j As Integer
Dim best_value As Integer
Dim best_j As Integer
For i = 1 To UBound(data) - 1
best_value = data(i)
best_j = i
For j = i + 1 To UBound(data)
If data(j) <best_value Then
best_value = data(j)
best_j = j
End If
Next j
data(best_j) = data(i)
data(i) = best_value
Next i
End Sub
①首先a=80,b=30②执行a=a+b,a变成了80+30=110。此时a=110,b=30
③执行b=a-b,b变成了110-30=80。此时a=110,b=80
④执行a=a*b,a变成了110*80=8800。此时a=8800,b=80
⑤执行Print b,所以输出80
希望对你有帮助:-D
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)