N=5 : CN=0
   DIM H(N) ,U(N)
   FOR I =0 TO N-1
      READ H(I), U(I)
      NEXT I
   DATA 0,0,0.5 ,1,1,2,1.5,3,2,4
10 INPUT"U=";U
   IF U<U(0) OR U>U(N-1) THEN 10
   FOR K= 1 TO N-1
        IF U<U(K) THEN
           I=K-1
           GOTO 15
        ENDIF
   NEXT K
   IF U=U(4) THEN
        H=H(4)  
        GOTO 20
   ELSE END
   ENDIF
15 H=H(I)+(H(I+1)-H(I))*(U-U(I))/(U(I+1)-U(I))
20 PRINT"H="; H
   CN = CN+1
   IF CN<N THEN 10
   END

解决方案 »

  1.   

    Private Sub Form_Load()
        On Error Resume Next
        Dim sngValU As Single, sngValH As Single, avData As Variant
        Dim N As Long, CN As Long, I As Long, K As Long
    '   N = 5: CN = 0
        N = 5: CN = 0
    '   Dim H(N), U(N)
        Dim H() As Single, U() As Single
        ReDim H(N - 1), U(N - 1)
    '   For I = 0 To N - 1    avData = Split("0, 0, 0.5, 1, 1, 2, 1.5, 3, 2, 4", ",")
        For I = 0 To N - 1
    '      READ H(I), U(I)
            H(I) = avData(I * 2)
            U(I) = avData(I * 2 + 1)
            Debug.Print H(I), U(I)
    '      Next I
        Next I
    '   Data 0, 0, 0.5, 1, 1, 2, 1.5, 3, 2, 4
    '10 INPUT"U=";U
    10  sngValU = CSng(InputBox("U="))
    '   If U < U(0) Or U > U(N - 1) Then GoTo 10
        If sngValU < U(0) Or sngValU > U(N - 1) Then GoTo 10
    '   For K = 1 To N - 1
        For K = 1 To N - 1
    '        If U < U(K) Then
            If sngValU < U(K) Then
    '           I = K - 1
                I = K - 1
    '           GoTo 15
                GoTo 15
    '        End If
            End If
    '   Next K
        Next K
    '   If U = U(4) Then
        If sngValU = U(4) Then
    '        H = H(4)
            sngValH = H(4)
    '        GoTo 20
            GoTo 20
    '   Else: End
        Else
            End
    '   End If
        End If
    '15 H = H(I) + (H(I + 1) - H(I)) * (U - U(I)) / (U(I + 1) - U(I))
    15 sngValH = H(I) + (H(I + 1) - H(I)) * (sngValU - U(I)) / (U(I + 1) - U(I))
    '20 Print "H="; H
    20 Debug.Print "H="; sngValH
    '   CN = CN + 1
        CN = CN + 1
    '   If CN < N Then GoTo 10
        If CN < N Then GoTo 10
    '   End
        End
    End Sub
      

  2.   

    Private Sub Form_Click()
    Const N = 5
    Dim H(N) As Single, U(N) As Single, aU As Single, aH As Single, CN As Integer
    CN = 0
    datastr = Split("0, 0, 0.5, 1, 1, 2, 1.5, 3, 2, 4", ",")
       For I = 0 To N - 1
          H(I) = datastr(I * 2)
          U(I) = datastr(I * 2 + 1)
       Next I10: aU = InputBox("U=")
       If aU < U(0) Or aU > U(N - 1) Then GoTo 10
       For K = 1 To N - 1
            If aU < U(K) Then
               I = K - 1
               GoTo 15
            End If
       Next K
       If aU = U(4) Then
            aH = H(4)
            GoTo 20
       Else: Exit Sub
       End If
    15: aH = H(I) + (H(I + 1) - H(I)) * (aU - U(I)) / (U(I + 1) - U(I))
    20: Print "H=" & aH
       CN = CN + 1
       If CN < N Then GoTo 10
    End Sub
      

  3.   

    上面的虽然依照原程序,但并不是典型VB程序。少等!我给你一个VB的程序。
      

  4.   

    大概根据源程序是这么改的,结果是不是一样就不知道了。Private N As Long
    Private U() As Single
    Private H() As Single
    Private CN As LongPrivate Sub Command1_Click()
      Dim tU As Single
      Dim K As Single
      Dim H_Out_1 As Boolean
      Dim H_Out_2 As Boolean
      Dim tH As Single
      
      If IsNumeric(Text1.Text) Then tU = CSng(Text1.Text)
      
      If tU >= U(0) And tU <= U(N - 1) Then
      
      For K = 1 To N - 1
        H_Out_1 = tU < U(K)
        I = H_Out_1 And (K - 1)
        tH = H_Out_1 And (H(I) + (H(I + 1) - H(I)) * (tU - U(I)) / (U(I + 1) - U(I)))
        CN = CN + (H_Out_1 And 1)
        If H_Out_1 Then tH_Out_String = tH_Out_String & "H=" & tH & Chr(13) & Chr(10)
      Next K
      H_Out_2 = (tU = U(4))
      tH = (H_Out_2 And H(4)) + ((Not H_Out_2) And tH)
      H_Out = H_Out_1 Or H_Out_2
      CN = CN + (H_Out_2 And 1)
      If H_Out_2 Then tH_Out_String = tH_Out_String & "H=" & tH & Chr(13) & Chr(10)
      Text2.Text = tH_Out_String
      Command1.Enabled = CN < N
      Text1.Enabled = CN < N
      End If
    End SubPrivate Sub Form_Load()
      N = 5: CN = 0
      ReDim U(N), H(N)
      For I = 0 To N - 1
        U(I) = I * 0.5
        H(I) = I
      Next
    End Sub