大虾们 帮我看看下面代码,想要的功能是将一整型数组元素按从小到大排列并输出
Private Sub Form_Click()
Dim a() As Integer
Dim i, j, temp As Integer
Dim sh As String
a = Array(2, 4, 87, 389, 39, 0, 84, 29, 46, 75)
sh = ""
For i = 1 To 9
For j = 1 To 10 - i
If a(j) > a(j + 1) Then
temp = a(j)
a(j) = a(j + 1)
a(j + 1) = temp
End If
Next j
Next i
For i = 1 To 10
sh = sh & " " & a(i)
Next i
Print "从小到大排序为"
Print sh
End Sub
Private Sub Form_Click()
Dim a() As Integer
Dim i, j, temp As Integer
Dim sh As String
a = Array(2, 4, 87, 389, 39, 0, 84, 29, 46, 75)
sh = ""
For i = 1 To 9
For j = 1 To 10 - i
If a(j) > a(j + 1) Then
temp = a(j)
a(j) = a(j + 1)
a(j + 1) = temp
End If
Next j
Next i
For i = 1 To 10
sh = sh & " " & a(i)
Next i
Print "从小到大排序为"
Print sh
End Sub
解决方案 »
- 关于窗体显示问题
- vb里想给创建的文件起个文件名,要根据当前时间来取得,这语句怎么写
- 请教VBA编程-如何在EXCEL 里进行库操作.请教大哥们帮忙.
- 如何做多語言的版本?
- 举VB常用的需要记住的WINDOWS API?
- VB如何修改文件属性
- 查询问题?
- 请问各位仁兄:有没有设定文件属性为不可删除的API函数??
- 兄弟们,快帮我想想,比较的急,寻求思路。
- win2000下如何准确读取网卡号?
- 为什么用SetWindowLong lngHwnd, GWL_STYLE, lngStyle - WS_CAPTION不能去掉某些窗口的标题栏
- 请问如何使用在treeview控件里点击节点,然后在同一个FORM里去调用一个窗口
Option Explicit
Private Sub Form_Click()
Dim a As Variant
Dim i, j, temp As Integer
Dim sh As String
a = Array(2, 4, 87, 389, 39, 0, 84, 29, 46, 75)
sh = ""
For i = 0 To 8
For j = i To 9
If a(i) > a(j) Then
temp = a(i)
a(i) = a(j)
a(j) = temp
End If
Next j
Next i
For i = 0 To 9
sh = sh & " " & a(i)
Next i
Print "从小到大排序为"
Print sh
End Sub
For j = 1 To 10 - i
If a(j) > a(j + 1) Then
temp = a(j)
a(j) = a(j + 1)
a(j + 1) = temp
End If
Next j
就不行,溢出错误
明天加分现在加不了
Option Explicit
'这样也可以.
Private Sub Form_Click()
Dim a() '这个地方改为 dim a as Variant 或 dim a() (后面不要说明类型 因为你后面采用的是 Array 方法。要不会出错)
Dim i, j, temp As Integer
Dim sh As String
a = Array(2, 4, 87, 389, 39, 0, 84, 29, 46, 75)
sh = ""
For i = 0 To 9 '(数组坐标是从0 至 9) 不是 1 至 10 所以都要减 1
For j = 0 To 8 - i '(数组坐标是从0 至 9) 不是 1 至 10 所以都要减 1
If a(j) > a(j + 1) Then
temp = a(j)
a(j) = a(j + 1)
a(j + 1) = temp
End If
Next j
Next i
For i = 0 To 9
sh = sh & " " & a(i)
Next i
Print "从小到大排序为"
Print sh
End Sub
If a(j) > a(j + 1) Then
temp = a(j)
a(j) = a(j + 1)
a(j + 1) = temp
End If
这段代码是有问题的,循环要用每一个a(i)值去和别的值---a(j) 去比较,并将小的数前移,就需要将它改为
If a(i) > a(j) Then
temp = a(i)'记录较大的数
a(i) = a(j)'将较小的数前移
a(j) = temp'将较大的数后移
'这样也可以.
Private Sub Form_Click()
Dim a() '这个地方改为 dim a as Variant 或 dim a() (后面不要说明类型 因为你后面采用的是 Array 方法。要不会出错)
Dim i, j, temp As Integer
Dim sh As String
a = Array(2, 4, 87, 389, 39, 0, 84, 29, 46, 75)
sh = ""
For i = 0 To 8 '{改为8就行了,没有必须再循环一次.} '(数组坐标是从0 至 9) 不是 1 至 10 所以都要减 1
For j = 0 To 8 - i '(数组坐标是从0 至 9) 不是 1 至 10 所以都要减 1
If a(j) > a(j + 1) Then
temp = a(j)
a(j) = a(j + 1)
a(j + 1) = temp
End If
Next j
Next i
For i = 0 To 9
sh = sh & " " & a(i)
Next i
Print "从小到大排序为"
Print sh
End Sub
8-i怎么确定的
For j = 0 To 8 - i '数据下标是9
If a(j) > a(j + 1) Then 'A(j+1) 'J+1 最大值不能超为 9(下标) J+1=9: J=8
我申请入群了