Dim a(1 To 8) As Integer
Dim num As IntegerPrivate Sub Form_Load()
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
End SubPrivate Sub Command1_Click()
     Command2.Enabled = True
     Command3.Enabled = True
     Command4.Enabled = True
     num = 5
     Call BuildA(a, num)
     Command1.Enabled = False
End SubPrivate Sub Command2_Click() Dim pos As Integer
 Dim x As Integer
 pos = InputBox("请输入需要插入的位置:", "插入的位置", 3)
 x = InputBox("请输入需要插入的数直:", "插入的数值", 9)
 Call InsertA(a, num, pos, x)
End SubPrivate Sub Command3_Click()
Dim pos As Integer
pos = InputBox("请输入需要删除的位置:", "插入的位置", 3)
Call DeleteA(a, num, pos)
End SubPrivate Sub Command4_Click()
Print "数组的平均值是:"; Average(a, num)
Print "数组的最大值是:"; Max(a, num)
Print "数组的最小值是:"; Min(a, num)
End SubPrivate Sub Command5_Click()
Call orderA(a, num)
End Sub
Private Sub Command6_Click()
EndEnd Sub这是Form窗口      下面是这个相应的模块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 SubPublic 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 SubPublic 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 SubPublic 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 SubPublic 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 FunctionPublic 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
   为啥最后总是出现        编译错误~~

解决方案 »

  1.   

    你的DeleteA过程中有语法错误,我试了一下你的程序,能运行,就是运行到有deleteA过程时会有错误,if。。else没有成对,还有其他的过程中也有小错误,你可以在检查一下,下面贴上我再新建的工程中运行完好的程序,
    Dim a(1 To 8) As Integer
    Dim num As IntegerPrivate Sub Form_Load()
    Command2.Enabled = False
    Command3.Enabled = False
    Command4.Enabled = False
    Command5.Enabled = False
    End SubPrivate Sub Command1_Click()
      Command2.Enabled = True
      Command3.Enabled = True
      Command4.Enabled = True
      num = 5
      Call BuildA(a, num)
      Command1.Enabled = False
    End SubPrivate Sub Command2_Click() Dim pos As Integer
     Dim x As Integer
     pos = InputBox("请输入需要插入的位置:", "插入的位置", 3)
     x = InputBox("请输入需要插入的数直:", "插入的数值", 9)
     Call InsertA(a, num, pos, x)
    End SubPrivate Sub Command3_Click()
    Dim pos As Integer
    pos = InputBox("请输入需要删除的位置:", "插入的位置", 3)
    Call DeleteA(a, num, pos)
    End SubPrivate Sub Command4_Click()
    Print "数组的平均值是:"; Average(a, num)
    Print "数组的最大值是:"; Max(a, num)
    Print "数组的最小值是:"; Min(a, num)
    End SubPrivate Sub Command5_Click()
    Call orderA(a, num)
    End Sub
    Private Sub Command6_Click()
    EndEnd SubPublic 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 SubPublic 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 SubPublic 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 SubPublic 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 SubPublic 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 FunctionPublic 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
      

  2.   


    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
    这个过程 里面,If n = 8 Or p > num Then,n没有声明,也没有赋值,就这样引用是不行的。