![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 疑難雜症區
(https://www.pcdvd.com.tw/forumdisplay.php?f=34)
- - 請教學過VB6的前輩...
(https://www.pcdvd.com.tw/showthread.php?t=157011)
|
|---|
請教學過VB6的前輩...
這是一個檢查質數的程式,已經查過輸了,但有些地方不甚明瞭,麻煩前輩指點迷津,謝謝!
Private Function abc(ByVal Number As Integer) As Byte '1 = 是質數 '2 = 不是質數 '3 = 輸入錯誤 Dim a As Integer (a代表的是什麼???) Dim b As Integer (為何要宣告b???程式碼內完全沒有提到b...) If Number <= 1 Then abc = 3 (上面這小段程式碼麻煩解說,謝謝) Exit Function End If If Number = 2 Then abc = 1 Number = Fix(Number) (為何要加上"Fix(Number)"???不加上去會有什麼差異???) For a = 2 To Number - 1 (2 To Number - 1這一段不懂???) If Number Mod a = 0 Then (Mod的意義是什麼???) abc = 2 Exit Function End If Next a abc = 1 End Function |
那程式只是其中一部分吧
那個function寫的不夠"獨立"
它還會去call其它的function吧! 另外主程式部分你沒有帶出來,要看問題點實在有點困難 另請問你認為你的vb功力到如何程度? 那本書是那一本書? (a代表的是什麼???) 是這個function要用的一個內部變數 (為何要宣告b???程式碼內完全沒有提到b...) 不是程式不夠完整,就是編輯人員弄錯了,要不就是作者功力... (上面這小段程式碼麻煩解說,謝謝) abc是function名,abc=就是這個function會傳回的值 (為何要加上"Fix(Number)"???不加上去會有什麼差異???) 不是程式不夠完整,就是編輯人員弄錯了,要不就是作者功力... (2 To Number - 1這一段不懂???) 迴圈 (Mod的意義是什麼???) "前面數字"除以"後面數字"後的"餘數" |
這是一個檢查質數的程式,已經查過輸了,但有些地方不甚明瞭,麻煩前輩指點迷津,謝謝!
Private Function abc(ByVal Number As Integer) As Byte '1 = 是質數 '2 = 不是質數 '3 = 輸入錯誤 Dim a As Integer (a代表的是什麼???) /*宣告 a 是一個整數 這個整數 可代表 0~65535*/ Dim b As Integer (為何要宣告b???程式碼內完全沒有提到b...) /*宣告 b 是一個整數 這個整數 可代表 0~65535*/ If Number <= 1 Then abc = 3 (上面這小段程式碼麻煩解說,謝謝) /* 假如 number 這個數值 小於或等於 1 則將 abc=3 將 3 這個整數 丟給變數 abc 也就是說 設定 abc=3 */ Exit Function /* 離開 Function 這個 函數 */ End If /* 這是一種格式 if xxx then End if */ If Number = 2 Then abc = 1 /* 假如 number 這個數值 等於 2 則將 abc=1 將 3 這個整數 丟給變數 abc 也就是說 設定 abc=1 */ Number = Fix(Number) (為何要加上"Fix(Number)"???不加上去會有什麼差異???) /* 將 Number 這個數值 丟進 Fix() 這個函式作運算 運算完並將結果 丟給 Number */ For a = 2 To Number - 1 (2 To Number - 1這一段不懂???) /* 這是要讓程式 跑回圈的 假如 Number 為 20 Number -1 就是 19 這個程式 會重 2 開始 跑到 19 然後跳開 2 開始執行回圈 3 4 : : 19 20 跳出回圈 If Number Mod a = 0 Then (Mod的意義是什麼???) abc = 2 Exit Function End If /* Mod 是 兩數想除取其於數 5 Mod 2 餘數 為 1 則 5 mod 2 就是 1 */ Next a /* 跑回圈格式 for * to * step * netx * */ abc = 1 End Function |
感謝兩位大大,寫的真詳細...:agree:
小弟只是初學者,參考的是學校的課本。 因為版權的問題我不敢全部轉載上來,我把連結附上, http://vbex.net/selffunction/isundivnum.html 粉小的程式,適合初學。 |
VB初學者可以去圖書館借王國榮的書...
超入門又一定看得懂... 還是比較建議學 C/C++ :) |
王國榮的書確實很簡單,適合初學者~~
|
vb 很容易 但太過龐大
要精通不容易 而且 物件越來越多 每天都有新的 唉 粉累喔 不過 c 最好能懂點 加油~~~~ 加油~~~~ |
又要麻煩各位了,我們老師又出題給我...:jolin:
如果我們已經知道這個數"不是質數",那要如何列出他的因數於MsgBox上??? 我們老師有提示 re = i,但我不知道怎麼PO出來...:nonono: Private Function Math(ByVal Number As Integer) As Byte Dim i As Integer If Number <= 1 Then Math = 3 Exit Function End If If Number = 2 Then Math = 1 End If For i = 2 To Number / 2 If Number Mod i = 0 Then Math = 2 Exit Function End If Next i Math = 1 End Function 還有這裡三個 If 要如何改成 ElseIf 呢??? 小弟有嘗試改過,不過就是有問題...:( Private Sub Command1_Click() On Error GoTo HERE 任意數 = InputBox("請入一個數", "檢查質數") Select Case Math(任意數) Case 1 MsgBox "是質數" Case 2 MsgBox "不是質數" Case 3 MsgBox "無意義" End Select Exit Sub HERE: MsgBox "錯誤" End Sub |
推...:jolin:
|
二推...
|
| 所有的時間均為GMT +8。 現在的時間是09:51 PM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2026。