首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VB6.0 三數排序實現:輸入解析、冒泡邏輯與完整代碼示例

     編輯:程式設計綜合問答

需求分析

  • 輸入:三個數字,以逗號分隔(如 3,1,2)。
  • 處理:解析輸入 → 存入數組/變量 → 排序 → 輸出。
  • 環境:VB6.0(經典桌面開發,非 VBA/VB.NET)。

核心邏輯:三元素排序

三個數排序最簡練的是兩兩比較交換(網狀排序 / 冒泡變體):

If a > b Then Swap a, b
If b > c Then Swap b, c
If a > b Then Swap a, b  ' 關鍵:前兩步可能打亂 a,b 順序

此邏輯僅需 3 次比較,無需循環,極適合固定三元素場景。

完整 VB6.0 代碼實現

Option Explicit

Private Sub Command1_Click()
    Dim inputStr As String
    Dim nums(1 To 3) As Double
    Dim i As Integer, pos As Integer
    Dim token As String
    
    ' 1. 獲取輸入
    inputStr = Text1.Text
    If Trim(inputStr) = "" Then
        MsgBox "請輸入三個數字,用逗號分隔!", vbExclamation
        Exit Sub
    End If
    
    ' 2. 解析逗號分隔字符串
    ' 簡易解析:用 Split 函數 (VB6 自帶)
    Dim parts() As String
    parts = Split(inputStr, ",")
    
    If UBound(parts) + 1 <> 3 Then
        MsgBox "必須輸入三個數字!", vbExclamation
        Exit Sub
    End If
    
    ' 3. 轉換為數值,簡單錯誤處理
    On Error GoTo ParseError
    For i = 0 To 2
        nums(i + 1) = Val(Trim(parts(i)))  ' Val 自動忽略前導空格,非數字返回 0
    Next i
    On Error GoTo 0
    
    ' 4. 排序 (網狀排序)
    If nums(1) > nums(2) Then Swap nums(1), nums(2)
    If nums(2) > nums(3) Then Swap nums(2), nums(3)
    If nums(1) > nums(2) Then Swap nums(1), nums(2)
    
    ' 5. 輸出結果
    Label1.Caption = "排序結果: " & nums(1) & ", " & nums(2) & ", " & nums(3)
    Exit Sub

ParseError:
    MsgBox "輸入包含非數字字符!", vbCritical
End Sub

' 交換輔助子程序
Private Sub Swap(ByRef x As Double, ByRef y As Double)
    Dim tmp As Double
    tmp = x
    x = y
    y = tmp
End Sub

界面設計建議

  • Text1:輸入框
  • Command1:按鈕「排序」
  • Label1:顯示結果

進階擴展:通用 N 個數排序

若未來需擴展,可改用動態數組 + 冒泡/快速排序:

Private Sub SortArray(arr() As Double)
    Dim i As Long, j As Long, tmp As Double
    For i = LBound(arr) To UBound(arr) - 1
        For j = i + 1 To UBound(arr)
            If arr(i) > arr(j) Then
                tmp = arr(i): arr(i) = arr(j): arr(j) = tmp
            End If
        Next j
    Next i
End Sub

常見坑

  1. Split 返回 0 基數組:VB6 Split 返回 0-based 數組,注意下標轉換。
  2. Val 函數隱性轉換:Val("123abc") = 123,嚴格驗證請用 IsNumeric 配合 CDbl。
  3. 按引用傳遞交換:Sub Swap(ByRef x, ByRef y) 必須用 ByRef,否則交換無效。

總結

VB6.0 實現三數逗號分隔排序,關鍵在於 Split 解析輸入、Val 轉數值、三元素網狀排序邏輯。上述代碼可直接放入按鈕點擊事件運行,界面簡單直觀,適合教學與小工具開發。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved