VB小问题,急急急~~~
[code=VB][/code]
Dim a(1 To 8) As Integer
Dim num As Integer
Private Sub Form_Load()
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
End Sub
Private Sub Command1_Click()
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
num = 5
Call BuildA(a, num)
Command1.Enabled = False
End Sub
Private Sub Command2_Click()
Dim pos As Integer
Dim x As Integer
pos = InputBox("请输入需要插入的位置:", "插入的位置", 3)
x = InputBox("请输入需要插入的数直:", "插入的数值", 9)
Call InsertA(a, num, pos, x)
End Sub
Private Sub Command3_Click()
Dim pos As Integer
pos = InputBox("请输入需要删除的位置:", "插入的位置", 3)
Call DeleteA(a, num, pos)
End Sub
Private Sub Command4_Click()
Print "数组的平均值是:"; Average(a, num)
Print "数组的最大值是:"; Max(a, num)
Print "数组的最小值是:"; Min(a, num)
End Sub
Private Sub Command5_Click()
Call orderA(a, num)
End Sub
Private Sub Command6_Click()
End
End Sub
这是Form窗口
下面是这个相应的模块
[code=VB][/code]
Public Sub printA(a() As Integer, num As Integer)
Dim i As Integer
For i = 1 To num
Form1.Print a(i)
Next i
Form1.Print
End Sub
Public Sub BuildA(a() As Integer, num As Integer)
Dim i As Integer
Randomize
For i = 1 To num
a(i) = Int(Rnd * 100)
Next i
Form1.Print "数据中的初始值为:"
Call printA(a, num)
End Sub
Public Sub InsertA(a() As Integer, num As Integer, p As Integer, x As Integer)
If n = 8 Or p > num Then
MsgBox "超出范围!", 0
Else
Dim i As Integer
For i = num To p Step -1
a(i + 1) = a(i)
Next i
a(p) = x
num = num + 1
Form1.Print "执行插入之后的数组:"
Call printA(a, num)
End If
End Sub
Public Sub DeleteA(a() As Integer, num As Integer, p As Integer)
If num = 0 Then
MsgBox "数组已空!", 0
Else
If p > num Then
MsgBox "位置越界!", 0
Else
Dim i As Integer
For i = p + 1 To num
a(i - 1) = a(i)
Next i
num = num - 1
Form1.Print "执行删除操作后的数组:"
Call printA(a, num)
End If
End Sub
Public Function Average(a() As Integer, num As Integer) As Integer
Dim temp As Integer
For i = 1 To num
Sum = Sum + a(i)
Next i
Average = Sum / num
End Function
Public Function Max(a() As Integer, num As Integer) As Integer
Dim temp As Integer
For i = 1 To num
If temp < a(i) Then
temp = a(i)
Next i
Max = temp
End Function
Public Function Min(a() As Integer, num As Integer) As Integer
Dim temp As Integer
temp = a(i)
For i = 2 To num
If temp > a(i) Then
temp = a(i)
Next i
Min = temp
End Function
Public Sub orderA(a() As Integer, num As Integer)
Dim i As Integer
Dim temp As Integer
Dim posmin As Integer
For j = i + 1 To num
If a(posmin) > a(j) Then
posmin = j
Next j
temp = a(i): a(i) = a(posmin): a(posmin) = temp
Next i
Form1.Print
Form1.Print "执行排序操作后的数组"
Call printA(a, num)
End Sub
为啥最后总是出现 编译错误~~
[解决办法]
查一下子程序或函数的顺序,看是不是这儿出了问题
[解决办法]
你的DeleteA过程中有语法错误,我试了一下你的程序,能运行,就是运行到有deleteA过程时会有错误,if。。else没有成对,还有其他的过程中也有小错误,你可以在检查一下,下面贴上我再新建的工程中运行完好的程序,
Dim a(1 To 8) As Integer
Dim num As Integer
Private Sub Form_Load()
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
End Sub
Private Sub Command1_Click()
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
num = 5
Call BuildA(a, num)
Command1.Enabled = False
End Sub
Private Sub Command2_Click()
Dim pos As Integer
Dim x As Integer
pos = InputBox("请输入需要插入的位置:", "插入的位置", 3)
x = InputBox("请输入需要插入的数直:", "插入的数值", 9)
Call InsertA(a, num, pos, x)
End Sub
Private Sub Command3_Click()
Dim pos As Integer
pos = InputBox("请输入需要删除的位置:", "插入的位置", 3)
Call DeleteA(a, num, pos)
End Sub
Private Sub Command4_Click()
Print "数组的平均值是:"; Average(a, num)
Print "数组的最大值是:"; Max(a, num)
Print "数组的最小值是:"; Min(a, num)
End Sub
Private Sub Command5_Click()
Call orderA(a, num)
End Sub
Private Sub Command6_Click()
End
End Sub
Public Sub printA(a() As Integer, num As Integer)
Dim i As Integer
For i = 1 To num
Form1.Print a(i)
Next i
Form1.Print
End Sub
Public Sub BuildA(a() As Integer, num As Integer)
Dim i As Integer
Randomize
For i = 1 To num
a(i) = Int(Rnd * 100)
Next i
Form1.Print "数据中的初始值为:"
Call printA(a, num)
End Sub
Public Sub InsertA(a() As Integer, num As Integer, p As Integer, x As Integer)
If n = 8 Or p > num Then
MsgBox "超出范围!", 0
Else
Dim i As Integer
For i = num To p Step -1
a(i + 1) = a(i)
Next i
a(p) = x
num = num + 1
Form1.Print "执行插入之后的数组:"
Call printA(a, num)
End If
End Sub
Public Sub DeleteA(a() As Integer, num As Integer, p As Integer)
If num = 0 Then
MsgBox "数组已空!", 0
Else
If p > num Then
MsgBox "位置越界!", 0
Else
Dim i As Integer
For i = p + 1 To num
a(i - 1) = a(i)
Next i
num = num - 1
Form1.Print "执行删除操作后的数组:"
Call printA(a, num)
End If
End If
End Sub
Public Function Average(a() As Integer, num As Integer) As Integer
Dim temp As Integer
For i = 1 To num
Sum = Sum + a(i)
Next i
Average = Sum / num
End Function
Public Function Max(a() As Integer, num As Integer) As Integer
Dim temp As Integer
For i = 1 To num
If temp < a(i) Then
temp = a(i)
End If
Next i
Max = temp
End Function
Public Function Min(a() As Integer, num As Integer) As Integer
Dim temp As Integer
temp = a(1)
For i = 2 To num
If temp > a(i) Then
temp = a(i)
End If
Next i
Min = temp
End Function
Public Sub orderA(a() As Integer, num As Integer)
Dim i As Integer
Dim temp As Integer
Dim posmin As Integer
For j = i + 1 To num
If a(posmin) > a(j) Then
posmin = j
Next j
temp = a(i): a(i) = a(posmin): a(posmin) = temp
Next i
Form1.Print
Form1.Print "执行排序操作后的数组"
Call printA(a, num)
End Sub
[解决办法]
以后贴代码 写在这[code=VB][/code]中间。别人容易看
[解决办法]
Public Sub InsertA(a() As Integer, num As Integer, p As Integer, x As Integer)If n = 8 Or p > num ThenMsgBox "³¬³ö·¶Î§£¡", 0ElseDim i As IntegerFor i = num To p Step -1a(i + 1) = a(i)Next ia(p) = xnum = num + 1Form1.Print "Ö´ÐвåÈëÖ®ºóµÄÊý×é:"Call printA(a, num)End IfEnd Sub