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