在VB编程中,数组占据着相当重要的作用,往往结合循环控制结构、函数过程出现在程序代码中。
今天,以求解数组最大值、最小值为例,带领大家学习一下数组的基本应用。
首先是定义一个数组,然后再用Rnd随机函数给数组元素赋值,接着使用循环 & 选择结构来实现求解。
VBde 1Private Sub Command1_Click() '求解最大值与最小值
Dim a%(1 To 20), max%, min%, i& '定义数组与变量
Randomize '产生随机数种子
max = a(1)
min = a(1)
For i = 1 To 20
a(i) = Int(Rnd * 121 + 30) '产生30--150之间的随机整数
Print a(i);
If i Mod 5 = 0 Then Print '每行输出5个数
If max < a(i) Then max = a(i)
If min > a(i) Then min = a(i)
Next i
Print "------------------------------------------------"
Print "最大值:Max值为"; max & ",最小值Min值为" & min
End Sub

上面的代码运行后,我们会发现问题:最大值求出来的没有问题,但是最小值得到的是0,这是哪儿出问题了呢?

遇到问题就要及时解决,这样才会不断进步,不断提高!
如果一个人在学习的过程中,没有遇到过任何问题,那显然是不可能的,尤其是在编程语言的学习中,逻辑一定要清晰,知识内容要熟练掌握。
问题产生原因:
min = a(1)
If min > a(i) Then min = a(i)
这两句代码专门抽起来,帮助大家更好的理解。
a(1)在数组没有赋值前,其值是0,所有min=0;
在数组赋值中,我们知道是产生的30--150之间的随机整数,所有任何一个数组元素其值一定是>=30的。
很明显,min是0,在执行If语句时,If min > a(i) 怎么都不会成立,所以Then后面自然也就不执行,最后得到的就是0了。
问题解决:
在定义Min时,我们要定义为一个大的数,这样在程序中与数组中的元素一一比较,小的元素值赋值给Min,这样才是正确的。
改进后的代码Private Sub Command1_Click()
Dim a%(1 To 20), max%, min%, i&
Randomize
max = a(1)
min = 150
For i = 1 To 20
a(i) = Int(Rnd * 121 + 30) '产生30--150之间的随机整数
Print a(i);
If i Mod 5 = 0 Then Print
If max < a(i) Then max = a(i)
If min > a(i) Then min = a(i)
Next i
Print "------------------------------------------------"
Print "最大值:Max值为"; max & ",最小值Min值为" & min
End Sub
修改后再运行,结果正确无误

学习VB中有问题可以长按识别下图添加老师微信号,学习问题在线答疑。