vb演算法
❶ VB簡單演算法
第一次
S(1)
m=1
循環1次
x=0
x=x+1
x=1
S=1
S(1)=1
s(2)
M=2
循環2次
X=1
X=X+1
X=2
X=2
X= X+1
X=3
s(2)=3
S(1)+S(2) 當然是 4 了
第二次按
S(1)
m=1
循環1次
x=3
x=x+1
x=4
S=4
S(1)=1
s(2)
M=2
循環2次
X=4
X=X+1
X=5
X=5
X= X+1
X=6
s(2)=6
S(1)+S(2) 當然是 10 了
第三次按 自己推到把!!!
第四次 22
第五次按 28
關鍵句!!
Static x As Integer
在過程級別中使用,用於聲明變數並分配存儲空間。在整個代碼運行期間都能保留使用 Static 語句聲明的變數的值。
❷ vb中的演算法問題
你的舉例很簡單的啊,用for 循環就可以實現。
Private Sub Command1_Click()
i = 0
For a = 1 To 9
For b = 3 To 9
If a + b = 15 Then List1.AddItem "a=" & a & ";b=" & b: i = i + 1
Next b
Next a
Print "a+b=15符合條件的解法有:" & i & "種"
End Sub
計算出來符合條件的解為4組。
因為你的題目太簡單了,我不知道到底從哪兒給你說起。所以就把你那個例子的解法寫給你了。
❸ VB中幾大演算法的概念
自己上網路 搜一下不就知道了。
排序演算法 所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。
解析演算法 所謂解析法(analysis algorithm)是指用解析的方法找出表示問題的前提條件與結果之間關系的數學表達式,並通過表達式的計算來實現問題求解。
事先考慮到某一變數可能取的值,盡量用自然語言中含義清楚的單詞來表示它的每一個值,這種方法稱為枚舉方法
索引查找是在索引表和主表(即線性表的索引存儲結構)上進行的查找。索引查找的過程是:首先根據給定的索引值K1,在索引表上查找出索引值等於KI的索引項,以確定對應予表在主表中的開始位置和長度,然後再根據給定的關鍵字K2,茬對應的子表中查找出關鍵字等於K2的元素(結點)。對索引表或子表進行查找時,若表是順序存儲的有序表,則既可進行順序查找,也可進行二分查找,否則只能進行順序查找
全來自網路 怎麼會搜不到呢。。
❹ VB中 / 是什麼演算法
除法運算,如:
❺ vb演算法初步每個符號代表什麼
循環結構允許重復執行一行或數行代碼。Visual Basic 支持的循環結構有:
Do...Loop
For...Next
For Each...Next
Do...Loop
用 Do 循環重復執行一語句塊,且重復次數不定。Do...Loop 語句有幾種演變形式,但每種都計算數值條件以決定是否繼續執行。如同 If...Then condition 必須是一個數值或者值為 True(非零)或 False(零)的表達式。
在下面的 Do...Loop 循環中,只要 condition 為 True 就執行 statements。
Do While condition
statements
Loop
當 Visual Basic 執行這個 Do 循環時會首先測試 condition。如果 condition 為 False(零),則跳過所有語句。如果 condition 為 True(非零),則 Visual Basic 執行語句,然後退回到 Do While 語句再測試條件。
因此,只要 condition 為 True 或非零,循環可以隨意執行多少次。如果 condition 一開始便為 False,則不會執行語句。例如,以下過程將計算某一目標字元串在另一字元串中出現的次數,只要發現目標串就執行循環:
Function CountStrings (longstring, target)
Dim position, count
position = 1
Do While InStr (position, longstring, target)
position = InStr(position, longstring, target)_
+ 1
count = count + 1
Loop
CountStrings = count
End Function
如果目標字元串未出現在另一個字元串中,則 InStr 返回 0,而且不再執行循環。
Do...Loop 語句的另一種演變形式是先執行語句,然後在每次執行後測試 condition。這種形式保證 statements 至少執行一次:
Do
statements
Loop While condition
其它兩種演變形式類似於前兩個,所不同的是,只要 condition 為 False 而不是 True,它們就執行循環。
循環零次或多次 至少循環一次
Do Until condition
statements
Loop Do
statements
Loop Until condition
.
For...Next
在不知道循環內需要執行多少次語句時,宜用 Do 循環。但是,在知道要執行多少次時,則最好使用 For...Next 循環。與 Do 循環不同, For 循環使用一個叫做計數器的變數,每重復一次循環之後,計數器變數的值就會增加或者減少。For 循環的語法如下:
For counter = start To end [Step increment]
statements
Next [counter]
參數 Counter、Start、end 和 increment 都是數值型的。
注意 increment 參數可正可負。如果 increment 為正,則 Start 必須小於等於 end,否則不能執行循環內的語句。如果 increment 為負,則 Start 必須大於等於 end,這樣才能執行循環體。如果沒有設置 Step,則 increment 預設值為 1。
在執行 For 循環時,Visual Basic
設置 counter 等於 start。
測試 counter 是否大於 end。若是的話,則 Visual Basic 退出循環。
(若 increment 為負,則 Visual Basic 測試 counter 是否小於 end。)
執行語句。
counter 增加一,或者增加 increment(如果已指定的話)。
重復步驟 2 到步驟 4。
以下代碼列印出所有有效的屏幕字體名:
Private Sub Form_Click ()
Dim I As Integer
For i = 0 To Screen.FontCount
Print Screen.Fonts (i)
Next
End Sub
在 VCR 示例應用程序中,HighlightButton 過程使用 For...Next 循環,一步步經過 VCR 窗體的控制項集合,並顯示適當的 Shape 控制項:
Sub HighlightButton (MyControl As Variant)
Dim i As Integer
For i = 0 To frmVCR.Controls.Count - 1
If TypeOf frmVCR.Controls (i) Is Shape Then
If frmVCR.Controls (i).Name = MyControl Then
frmVCR.Controls (i).Visible = True
Else
frmVCR.Controls (i).Visible = False
End If
End If
Next
End Sub
For Each...Next
For Each...Next 循環與 For...Next 循環類似,但它對數組或對象集合中的每一個元素重復一組語句,而不是重復語句一定的次數。如果不知道一個集合有多少元素, For Each...Next 循環非常有用。
For Each...Next 循環的語法如下:
For Each element In group
statements
Next elementt
例如,下面的子過程打開 Biblio.mdb,把每一個表的名字加到列表框中。
Sub ListTableDefs ()
Dim objDb As Database
Dim MyTableDef as TableDef
Set objDb = OpenDatabase("c:\vb\biblio.mdb", _
True, False)
For Each MyTableDef In objDb.TableDefs ()
List1.AddItem MyTableDef.Name
Next MyTableDef
End Sub
請記住使用 For Each...Next 時的幾點限制:
對集合,element 只能是 Variant 變數,或一般的 Object 變數,或「對象瀏覽器」中列出的對象。
對數組,element 只能是 Variant 變數。
For Each...Next 不能與用戶自定義類型的數組一起使用,因為 Variant 不可能包含用戶自定義類型。
❻ VB一個演算法問題。
樓主到現在還沒結貼證明還沒找到所求,正好有空,我就補上VB6的碼:
問題考點:數字組合演算法,就用最簡單的遞歸吧。
你先建三text,text1的屬性:scrollbars設為2 multiline設定true, text1縱軸拉長點,text2、text3左右拉長點點(好看數),以及一command1
Option Explicit
Dim sourceArray, dstArray, strSum As String, isExist() As Integer
Private Sub Combine(a, n As Integer, m As Integer, b, mm As Integer) '遞歸演算法
Dim i%, j%, strSum$, sum%
For i = n To m Step -1
b(m - 1) = i - 1
If m > 1 Then
Call Combine(a, i - 1, m - 1, b, mm)
Else
sum = 0
strSum = ""
For j = mm - 1 To 0 Step -1
sum = sum + a(b(j))
strSum = strSum & a(b(j)) & "+"
Next j
isExist(sum) = 1
strSum = Left$(strSum, Len(strSum) - 1) & "=" & sum
Text1 = Text1 & strSum & vbCrLf
DoEvents
End If
Next i
End Sub
Private Sub Command1_Click()
Dim nCount As Integer, ArrayMax As integer, ArrayMin As integer, strTemp As String, intTemp As integer
Dim i As Integer, sum As Integer
nCount = InputBox("請輸入該系列數字的總數:")
ArrayMin = InputBox("請輸入該系列數字的最小值:")
Do While ArrayMax <= ArrayMin
If ArrayMax <> 0 Then
ArrayMax = InputBox("最大值必須比最小值" & ArrayMin & "大,請輸入該系列數字的最大值:")
Else
ArrayMax = InputBox("請輸入該系列數字的最大值:")
End If
Loop
Randomize
Text1 = ""
Text2 = "該系列數字具體為:"
For i = 1 To nCount
intTemp = Int(Rnd * (ArrayMax - ArrayMin + 1) + ArrayMin) '隨機產生數字
Text2 = Text2 & intTemp & " "
strTemp = strTemp & intTemp & " "
Next
sourceArray = Split(RTrim$(strTemp))
dstArray = Split(RTrim$(strTemp))
For i = 0 To nCount - 1
sum = sum + sourceArray(i)
Next i
ReDim isExist(sum) As Integer
Text3 = "計算中,請稍等......"
For i = 1 To nCount
Call Combine(sourceArray, nCount, i, dstArray, i)
Next
Text3 = "可能的和一定沒下列數字:"
For i = 0 To sum
If isExist(i) = 0 Then
Text3 = Text3 & i & " "
End If
Next
Text3 = Text3 & "以及大於" & sum & "的所有數" '最終結果
End Sub
❼ VB演算法問題
ac 沒有定義,只定義了a=12 b=5 c=7 沒有定義的,默認為0
於是ac=0 如果是 a*c=12*7
(aModB) 應該是 (a mod b) 吧 => 12 mod 5 = 2
int(13/5) = 2
值應該是4
最後只能說,你的表達式寫得對么?
❽ VB階乘的演算法
求階乘的兩種演算法
方法一(計數循環)
使用For語句。
Function Factorial(n As Integer) As Long
On Error GoTo Hander
Dim i As Long
Factorial = 1
For i = n To 1 Step -1
Factorial = Factorial * i
Next i
Exit Function
Hander:
MsgBox "數值過大!", vbExclamation, "Error"
Resume Next
End Function
方法二(遞歸)
簡單地說,遞歸就是一個過程調用過程本身。
思路為:n! = n * (n-1)!
Function Factorial(n As Integer) As Long
On Error Goto Hander
If n > 0 Then
Factorial = n * Factorial(n - 1)
Else
Factorial = 1
End If
Exit Sub
Hander:
Msgbox "數值過大!",vbExclamation,"Error"
Resume Next
End Function
例如,當 n=5 時,求 Factorial(5) 的值變為 5 * Factorial(4)。而 Factorial(4) 又可變為 4 * Factorial(3) ......,Factorial(2)又可變為 2 * Factorial(1),這時 Factorial(1) = 1 已知,遞歸調用停止,其執行結果為 5 * 4 * 3 * 2 * 1,即 5! 。
過程中還是用了錯誤陷阱(On Error...),以防數值過大發生溢出錯誤。