《VB控制結(jié)構(gòu)多重循環(huán)》由會員分享,可在線閱讀,更多相關(guān)《VB控制結(jié)構(gòu)多重循環(huán)(27頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1 v提 要多 重 循 環(huán)常 用 算 法v重 點多 重 循 環(huán)常 用 算 法第 4章 Visual Basic語 言 基 礎(chǔ) 5 2 v一 個 循 環(huán) 結(jié) 構(gòu) 的 循 環(huán) 體 內(nèi) 包 含 了 另 一 個 循 環(huán) 結(jié) 構(gòu) .v嵌 套 一 層 稱 為 二 重 循 環(huán)v多 重 循 環(huán) 中 遇 Exit For(Do), 只 跳 出 當 前 一 層 循 環(huán) . 3 v討 論 多 重 循 環(huán)內(nèi) 、 外 循 環(huán) 的 循 環(huán) 變 量 不 可 同 名 .內(nèi) 、 外 循 環(huán) 不 可 交 叉 (外 循 環(huán) 完 全 包 含 內(nèi) 循 環(huán) ).執(zhí) 行 次 數(shù)當 外 循 環(huán) 執(zhí) 行 一 次 , 內(nèi) 循 環(huán) 全 部 執(zhí) 行
2、 .內(nèi) 循 環(huán) 執(zhí) 行 總 次 數(shù) =外 循 環(huán) 次 數(shù) 內(nèi) 循 環(huán) 次 數(shù)錯 誤正 確 4 For i=1 to 6 step 1 Print Next iFor i=1 to 6 step 1 Print ;Next i問 題 1: 要 求 利 用 循 環(huán) 結(jié) 構(gòu) 在 一 列 打 印 6個 “ ”問 題 2:要 求 利 用 循 環(huán) 結(jié) 構(gòu) 在 一 行 打 印 6個 “ ” , 如 何 修改 ?歸 納 :分 隔 符 “ ;”使 多 個 內(nèi) 容 一 個 個 緊 跟 著 打 印 輸出 5 For k=1 To 3 Next kFor i=1 to 6 Print ;Next i 問 題 3: 打
3、 印 3行 , 每 行 6個 “ ” , 如 何 解 決 ? For i = 1 To 6 Step 1 Print ; Next I For i = 1 To 6 Step 1 Print ; Next i For i = 1 To 6 Step 1 Print ; Next iv結(jié) 論 單 層 循 環(huán) : 控 制 一 行 上 的 所 有 列 ,采 用 “ 緊 湊 ” 方 式 輸 出 ;雙 層 循 環(huán) : 內(nèi) 循 環(huán) 控 制 一 行 上 的 所 有 列 ,外 循 環(huán) 控 制 所 有 行 . 6For J= 1 To 9Print J; x; 1; =; 1*J;輸 出 一 行 所 有 列 之
4、 后 能 換 行 7 思 考 : 打 印 上 三 角 或 程 序 如 何 改 動 ?說 明 :Tab(n)函 數(shù) 后 項 內(nèi) 容 在 第 n個 字 符 位 上 輸 出 8 打 印 金 字 塔 _(選 做 ) 9 v 素 數(shù) 是 一 個 大 于 2且 只 能 被 1和 本 身 整 除 的 整 數(shù) .v 判 別 一 個 數(shù) n是 否 為 素 數(shù) 的 方 法 :對 于 n 從 i=2, 3, , n-1判 別 n能 否 被 i整 除 , 只 要 有 一個 能 整 除 , n不 是 素 數(shù) , 否 則 n是 素 數(shù) 。算 法 1: 素 數(shù) 不 能 被 2 n-1的 其 中 一 個 整 數(shù) 整 除優(yōu) 化
5、 算 法 1 :素 數(shù) 不 能 被 2 n/2的 其 中 一 個 整 數(shù) 整 除優(yōu) 化 算 法 2 :素 數(shù) 不 能 被 2 Sqr(n)的 其 中 一 個 整 數(shù)整 除問 題 : 判 斷 一 個 數(shù) n是 否 為 素 數(shù) 10 v 判 斷 一 個 數(shù) n是 否 為 素 數(shù) ?For i=2 to n-1 if n mod i=0 then Exit For 被 整 除Next i Exit For 退 出 當 前 循 環(huán)If i n-1 then Print n;“是 素 數(shù) ” Else Print n;“是 非 素 數(shù) ”End if Int(sqr (n) 11 For n = 101
6、 To 300 Step 2 Next n要 求 :輸 出 100 300之 間 的 所 有 素 數(shù) .For i = 2 To Int(Sqr(n) If n Mod i = 0 Then Exit For Next iIf i Int(Sqr(n) Print n;“是 素 數(shù) ”課 后 任 務 1 12 1.最 大 、 最 小 值 若 干 數(shù) 求 最 大 值 , 一 般 先 假 設(shè) 第 一 個 數(shù) 為 最 大 值 初 值 ; 然 后 將 剩 余 的 每 一 個 數(shù) 與 最 大 值 比 較 , 若 該 數(shù) 大 于 最 大 值 , 將 該 數(shù) 替 換 為 最 大 值 ; 依 次 逐 一 比
7、較 . Dim x%,Max% x = Int(Rnd * 101 + 100 ) For i = 2 To 5 x = Int(Rnd * 101 + 100 ) Next i Print 最 大 值 =; Max 隨 機 產(chǎn) 生 5個 100 200之 間 的 整 數(shù) ,求 最 大 值 . 13 計 算 1 100的 3或 7的 倍 數(shù) 的 和 計 算 3 10的 乘 積S = ?2.累 加 、 連 乘 、 計 數(shù) _ S= 0For I = 1 To 100 If I Mod 3 = 0 Or I Mod 7 = 0 Then S = S + I k = k + 1 End IfNext
8、 IPrint S,k For I =3 To 10 Next I Print S計 數(shù) 器累 加 器 連 乘 器= 0End If 14 分 析 : 每 一 項 每 次 累 加 之 和 都 是 變 化 量因 此 , 需 要 兩 個 變 量 用 T表 示 每 一 項 的 值 :T=T+1 用 S表 示 累 加 之 和 :S=S+T 循 環(huán) 終 止 條 件 : 循 環(huán) 次 數(shù) n 初 始 化 : S=0回 顧 :計 算 s=1+2+3+nPrivate sub Form_Click( ) Dim I% , S%, T%,n% T為 每 一 項 n=val(Inputbox(“n=”) S=0 F
9、or I=1 To n T=T+1 S=S+T Next I Print “S=”;SEnd Sub S=S+Is=1 2 3 4 n S=n!S=1For I=1 o n S= * INext I累 加 問 題 : 公 式 S=S+T ;初 值 S=0 連 乘 問 題 : 公 式 S=S*T ; 初 值 S=1 15 例 : 計 算 s=1 1/2 1/3 1/n分 析 : T表 示 每 一 項 : T = 1/n S 表 示 連 乘 的 值 : S = S * T 初 始 化 : S= 1思 考 : 能 否 交 換 兩 者 次 序 即 : 先 連 乘 ,后 產(chǎn) 生 新 一 項 ? 而 令
10、初 值 T=第 一 項 S=T= S * T1n S=T= S * TBAS=T=S * T1n T可 理 解 為 通 式 16 )12()1-(2n n)(2.7565343122 2222 nS=T=S * Tv觀 察當 n=10時 , p = ? ;當 n=50時 , p = ? ;當 n=100時 , p = ?;當 n=10000時 , p = 比 較 精 確 . 可 見 該 公 式 收 斂 較 慢 .(2*n)2 / (2*n-1)*(2*n+1)B=(2*n)2 : A=(2*n-1)*(2*n+1)BA從 第 二 項 開 始 才 有 規(guī) 律 可 循 17 Private Sub
11、 Form_Click() Dim S#, T#, i i; 項 的 和 是 ; SEnd Sub m1i i!11 . !1.3!1!211!11e i 21 v累 加初 值 : S=0, T=第 一 項 通 用 公 式 : S=S+T : :T=B/Av連 乘初 值 : S=1, T=第 一 項 通 用 公 式 : S=S*T : :T=B/A v 說 明 : T=B/A中 的 A或 B均 可 為 常 量 或 變 量 表 達 式 若 A=1, 則 T=B 若 B=1, 則 T=1/A 22 v 設(shè) 小 雞 x只 、 公 雞 y只 、 母 雞 z只 , 列 出 方 程 :x+y+z=100
12、0.5x+2y+3z=100 可 見 , 三 個 未 知 數(shù) , 兩 個 方 程 , 此 題 有 若 干 個 解 。v可 窮 舉 X、 Y、 Z的 每 一 種 取 值 , 符 合 就 是 其 中 一 種 方 案列 舉 各 種 可 能 情 況 , 找 出 符 合 要 求 的Private Sub Form_click() For x = 1 To 100 For y = 1 To 100 For z = 1 To 100 Next z Next y Next xEnd Sub問 題 : 100元 買 100只 雞 , 小 雞 每 只 0.5元 , 公 雞 每 只 2元 , 母 雞 每 只 3元
13、, 可 買 公 、 母 、 小 雞 各 多 少 只 ? 23 24 4.遞 推 法 (課 本 P11)猴 子 吃 桃 子 問 題 : 猴 子 摘 下 若 干 個 桃 子 , 第 一 天 吃 了桃 子 的 一 半 多 一 個 , 以 后 每 天 吃 了 前 一 天 剩 下 的 一 半 多 一個 , 到 第 十 天 吃 以 前 發(fā) 現(xiàn) 只 剩 下 一 個 桃 子 , 問 猴 子 第 一 天共 摘 了 幾 個 桃 子 ?Dim day As Integer, x As Integer, y As Integerx = 1 For day = 9 To 1 Step -1 y = (x + 1) *2
14、 前 一 天 的 桃 子 數(shù) 是 第 2天 桃 子 數(shù) 加 1的 2倍 x = yNext dayPrint xv分 析 : 此 問 題 屬 于 “ 倒 推 ” 問 題 , 先 從 最 后 一 天 推 出 倒數(shù) 第 二 天 的 桃 子 , 再 從 倒 數(shù) 第 二 天 的 桃 子 推 出 倒 數(shù) 第 三 天的 桃 子 v設(shè) 第 n天 的 桃 子 為 x, 第 n-1天 的 桃 子 為 y, 前 一 天 的 桃 子數(shù) 為 : y=( x+1) 2 25 1. 多 重 循 環(huán) 的 內(nèi) 外 循 環(huán) 之 間 的 聯(lián) 系2. 常 用 算 法 :累 加 、 最 值 、 窮 舉 、 素 數(shù) 等本 節(jié) 小 結(jié)
15、26 循 環(huán) 控 制 結(jié) 構(gòu) 常 見 錯 誤1.不 循 環(huán) 或 死 循 環(huán) 的 問 題 主 要 是 循 環(huán) 的 條 件 、 初 值 、 終 值 、 步 長 的 設(shè) 置 有 問 題2.循 環(huán) 結(jié) 構(gòu) 中 缺 少 配 對 的 結(jié) 束 語 句 For 缺 少 配 對 的 Next 3.循 環(huán) 嵌 套 時 , 內(nèi) 外 循 環(huán) 交 叉4.累 加 、 連 乘 時 , 存 放 累 加 、 連 乘 的 變 量 賦 初 值 問 題 27 課 后 任 務 3 課 后 習 題 P56一 .選 擇 題 P61二 .填 空 題 P66三 .編 程 題 (3 4) 實 驗 四 P21實 驗 案 例 一 P22 三 .實 驗 內(nèi)容 (3)