【正文】
ox(結(jié)果為: + str1, , 1到 1000之間完數(shù) ) 其它控制語句 Exit 語句 功能:退出某種結(jié)構(gòu)的執(zhí)行。如:循環(huán)結(jié)構(gòu)、過程、函數(shù)等。 語句的形式如下: Exit For Exit Do Exit Sub Exit Function 前兩個的功能是退出循環(huán)結(jié)構(gòu),后兩個的功能是退出過程和函數(shù)(具體用法見相關(guān)章節(jié))。 End語句 語句形式一:(獨立使用 ) End 功能:用于結(jié)束一個程序的運行。 語句形式二:(與其他對應(yīng)的語句配對使用 )。 End If、 End While、 End With、 End Sub等。 功能:用于結(jié)束一個過程或塊。 應(yīng)用舉例 例: 利用公式計算 π的近似值,直到最后一項的絕對值小于 106為止。 分析:這是一個典型的求和問題。把上面的公式轉(zhuǎn)換成: 每一項的正負(fù)號利用 (1)^(n1)來實現(xiàn),通項公式為: (1) ^(n1)*(1/(2*n1))。 程序如下: Dim s As Double Dim n As Integer s = 0 n = 0 Do n = n + 1 s = s + (1) ^ (n 1) * (1 / (2 * n 1)) Loop While 1 / (2 * n 1) = 10 ^ 6 MsgBox(π的值為: + Format(4 * s, .), , 利用求和公式求 π的值 ) 例:裴波那契數(shù)列是由計算某類動物繁殖增長量而提出的。數(shù)列的前兩項是 1,以后的每一項都是其相鄰前兩項之和。即: 13…. 。顯示該數(shù)列的前 20項。 分析:在編寫程序時,特別的循環(huán)程序,要找出循環(huán)的規(guī)律。通過對數(shù)列的觀察,可以發(fā)現(xiàn):假定最實初的兩個值 1,分別賦值給 a和 b,通過 a+b求 c;為了求下一個數(shù)據(jù),可以把剛才 b的值賦給 a,把 c的值賦給 b,再通過求 a+b得出新的 c來。 Dim a, b, c, i As Integer Dim str1 As String a = 1 : b = 1 str1 = a amp。 amp。 b For i = 3 To 20 c = a + b str1 = str1 amp。 amp。 c a = b b = c Next MsgBox(str1, , 結(jié)果為: ) 例:百雞問題:假定公雞每只 2元,母雞每只 3元,小雞每元錢 3只。請問用 100元錢買 100只雞,有多少種買法? 分析:根據(jù)題意,可列出方程: x+y+z=100 2*x+3*y+z/3=100 其中的 x、 y、 z分別表示公雞、母雞和小雞的只數(shù),且只能是整數(shù)。 由于有 3個未知數(shù),兩個方程,解不唯一。因此要充分利用計算機(jī)的循環(huán)特長,把全部的組合挨個試一遍,找出符合條件的解。這種方法叫“窮舉法”或“枚舉法”。 通過分析可知,公雞的只數(shù)在 0…50 之間,母雞的只數(shù)在0…33 之間,小雞的只數(shù)在 0…100 之間,那么可以利用三重循環(huán),把這些組合全部測試一遍。 Dim x, y, z As Integer Dim str1 As String str1 = For x = 0 To 50 For y = 0 To 33 For z = 0 To 100 If x + y + z = 100 And 6 * x + 9 * y + z = 300 Then str1 = str1 + Str(x) + + Str(y) + + Str(z) + + Chr(13) + Chr(10) End If Next Next Next MsgBox(所有的買法如下: + vbCrLf + str1, , 百雞問題 ) 最內(nèi)層的語句循環(huán)的次數(shù)為: 50*33*100=165000次, 算法的改進(jìn):由于公雞和母雞的只數(shù)( x、 y)已確定,那么z的值肯定是 100xy,否則,第一個方程不成立。所此,可以把第三層循環(huán)去掉,變成兩重循環(huán)。 兩重循環(huán)的程序如下 (為了省略篇幅,只寫出了循環(huán)部分 ): For x = 0 To 50 For y = 0 To 33 z = 100 x y If 6 * x + 9 * y + z = 300 Then str1 = str1 + Str(x) + + Str(y) + + Str(z) + + vbCrLf End If Next Next 這個程序最內(nèi)層語句的循環(huán)次數(shù)為: 50*33=1650次,效率明顯提高 例:打印九九乘法表(運行的結(jié)果如圖所示)。 Dim i, j, c As Integer Dim str1 As String str1 = For i = 1 To 9 For j = 1 To i c = i * j If c = 9 Then str1 = str1 amp。 i amp。 * amp。 j amp。 = amp。 c amp。 Else str1 = str1 amp。 i amp。 * amp。 j amp。 = amp。 c amp。 End If Next str1 = str1 amp。 vbCrLf Next MsgBox(str1, , 結(jié)果為: