关于VB中的for问题!!

来源:百度知道 编辑:UC知道 时间:2024/05/14 04:45:45
Option Explicit
Dim a(9) As Long '声明静态一维数组为整型
Private Sub Form_Load()
Print: Print: Print: Print: Print: Print ;
a(0) = 564 '给数组a中各数组元素赋值
a(1) = 78
a(2) = 45
a(3) = 456412
a(4) = 456
a(5) = 1
a(6) = 45 + 79
a(7) = 12
a(8) = 1 * 966
a(9) = 65 / 5
Dim i As Long
For i = 0 To 9
'显示给出数组a中各元素值
Label1.Caption = Label1.Caption & "a(" & CStr(i + 1) & ")=" & CStr(a(i)) & " "
Next i
End Sub
Private Sub Command1_Click()
Dim i As Long, l As Long, n As Long
For i = 0 To 9 '使用选择排序法排序,每次选择最小的数值
For l = i To 9
If a(i) > a(l) Then
n = a(i)
a(i) = a(l)
a(l) = n
End If
Next l
Print a(i) '打印输出数组元素的值
Next i

Print 是对每个排序好的数,进行输出
至于比较的问题,其实程序有点缺陷,(当然,正确还是正确的)
更好的应该是
将For j=i to 9 改成
For j=i+1 To 9
这里的i,j都只是下标,用下标来引用相应的数组项,对这些数组项进行比较,由于j>i,这样在内循环当中,就将第i个项后面的所有项都与第i项进行比较,如果有比第i项小的,就交换,这样最后就实现了从小到大的排序

其它不说了
a(i) > a(l)这句你理解错误了
并不是i > l你要搞清楚,因为像你说的i是不可能大于l的
但是a(i)并不是i,a(i)是a那个数组中的一个,就是循环到的那个

假如i循环到2了,那么a(i)就=45
假如i循环到3了,那么a(i)就=456412

1、print为换行语句,为了打印到指定的位置。当然不用也不会影响本段程序的运行。
2、If a(i) > a(l) Then 并不是比较i和l的大小,而是比较数组a中第i和l个数组元素的大小。
3、你的程序运行没什么问题,估计上面有很多空行是为了给label1留出显示数组a()得空间。
4、有什么问题再联系。

sorry