《《循環(huán)結(jié)構(gòu)》課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《《循環(huán)結(jié)構(gòu)》課件(24頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、1第三章 循 環(huán) 結(jié) 構(gòu) 2第三章 什 么 是 循 環(huán) 結(jié) 構(gòu) ? 循 環(huán) 語(yǔ) 句 練 習(xí) 和 綜 合 設(shè) 計(jì) 3第三章 循 環(huán) 結(jié) 構(gòu) 是 通 過(guò) 對(duì) 條 件 的 判 斷 來(lái) 重 復(fù) 執(zhí) 行 某些 程 序 語(yǔ) 句 或 程 序 段 C語(yǔ) 言 中 是 用 for語(yǔ)句 或 while語(yǔ) 句 或dowhile語(yǔ) 句 來(lái)構(gòu) 成 循 環(huán) 結(jié) 構(gòu) 的 。循 環(huán) 結(jié) 構(gòu) 的 主 要 功能 是 重 復(fù) 執(zhí) 行 某 些語(yǔ) 句 或 某 段 程 序 。 4第三章 問(wèn) 題 :在 唱 歌 等 大 獎(jiǎng) 賽 評(píng) 分 時(shí) , 一 般 要 有 若 干 名評(píng) 委 , 記 分 規(guī) 則 為 : 去 掉 一 個(gè) 最 高 分 , 去掉
2、一 個(gè) 最 低 分 , 再 算 平 均 分 。 設(shè) 按 百 分 制計(jì) 分 , 試 設(shè) 計(jì) 一 個(gè) 算 分 程 序 。 用 循 環(huán) 來(lái) 累計(jì) 總 得 分 程 序 5第三章 語(yǔ) 句 形 式 :for(表 達(dá) 式 1;表 達(dá) 式 2;表 達(dá) 式 3) 語(yǔ) 句 ; 可 以 是 復(fù) 合 語(yǔ) 句非 0時(shí) 執(zhí) 行 循 環(huán) 體循 環(huán) 前 先 求 解常 為 賦 值 語(yǔ) 句 每 次 執(zhí) 行 完 循 環(huán) 體 后求 解 ,常 為 增 量 或 減 量執(zhí) 行 過(guò) 程 :( 1) 求 解 表 達(dá) 式 1, 為 循 環(huán) 控 制變 量 賦 初 值 。( 2) 求 解 表 達(dá) 式 2, 若 表 達(dá) 式 2的值 為 真 , 則 執(zhí)
3、 行 循 環(huán) 體 一 次 , 若為 假 則 結(jié) 束 循 環(huán) 結(jié) 構(gòu) , 轉(zhuǎn) 去 執(zhí) 行循 環(huán) 的 后 繼 語(yǔ) 句 。( 3) 執(zhí) 行 完 一 次 循 環(huán) 體 后 , 接 著求 解 表 達(dá) 式 3, 對(duì) 循 環(huán) 控 制 變 量 進(jìn)行 增 量 或 減 量 操 作 , 再 重 復(fù) 第 2步 操 作 。for(x=1;x5;x+) printf(%d;x); 6第三章 例 從 鍵 盤(pán) 上 輸 入 張 三 同 學(xué) 五 門(mén) 課 程 的 成 績(jī) 67、92、 78、 83、 75, 計(jì) 算 出 平 均 成 績(jī) 并 輸 出 。#include main()int i,sum,score; sum=0; for
4、(i=1; i=5; i+) scanf(%d, sum=sum+score; printf(n平 均 成 績(jī) 為 : %6.2f n, sum/5.0); 第 i次 循 環(huán) i=5 的 值 sum的 值 1 真 0+67 2 真 67+92 3 真 159+78 4 真 237+83 5 真 320+75 6 假 結(jié) 束 循 環(huán) 7第三章 例 從 鍵 盤(pán) 上 輸 入 一 個(gè) 大 于 2的 整 數(shù) n, 判 斷 n是不 是 素 數(shù) 。 只 能 被 1和 它 本 身 整 除 的 整 數(shù) 稱 為 素 數(shù) 。 在數(shù) 學(xué) 中 , 要 判 斷 n是 否 為 素 數(shù) , 通 常 讓 n除 以 2到 n的
5、平 方 根 之 間 的 每 一 個(gè) 整 數(shù) , 如 果 n能 被 2到 n的平 方 根 之 間 的 某 個(gè) 整 數(shù) 整 除 , 則 說(shuō) 明 n不 是 素 數(shù) ,否 則 n一 定 是 素 數(shù) 。 程 序 8第三章 省 略 表 達(dá) 式 1i=1;for( ;i=10;i+) sum=sum+i;for語(yǔ) 句 的 任 何 一 個(gè) 表 達(dá) 式 都 可 以 省 , 但 不 能省 略 分 號(hào) 。 例 如 : 省 略 表 達(dá) 式 3for( i=1;i=10;) sum=sum+i; i+; 省 略 表 達(dá) 式 2時(shí) ,循 環(huán) 將 變 成 死 循 環(huán) 循 環(huán) 體 由 多 個(gè) 語(yǔ) 句 組 成 時(shí) ,應(yīng) 該 寫(xiě)
6、 成 復(fù) 合 語(yǔ) 句 的 形 式 for語(yǔ) 句 中 可 應(yīng) 用 逗 號(hào) 表 達(dá) 式 , 使 兩 個(gè) 或 多 個(gè) 控制 變 量 同 時(shí) 控 制 循 環(huán)for(i=0,j=10;ij;i+,j-) 循 環(huán) 體 for語(yǔ) 句 允 許 在 循 環(huán) 體 內(nèi) 改 變 循 環(huán) 控 制 變 量 的 值sum=0;for(count=1;count=3000) count=100 ;在 循 環(huán) 體 外 的 語(yǔ) 句 不 受 循 環(huán) 的 控 制 , 在 循 環(huán) 體 內(nèi) 的 語(yǔ) 句 受 循 環(huán) 的 控 制 。 9第三章 語(yǔ) 句 形 式 : while(表 達(dá) 式 ) 語(yǔ) 句 ; 可 以 是 復(fù) 合 語(yǔ) 句 , 其中
7、必 須 含 有 改 變 條 件表 達(dá) 式 值 的 語(yǔ) 句執(zhí) 行 過(guò) 程 : 先 計(jì)算 表 達(dá) 式 的 值 , 當(dāng)表 達(dá) 式 的 值 為 非 0 時(shí) 執(zhí) 行 語(yǔ) 句 ; 為 0 時(shí) 執(zhí) 行 循 環(huán) 的 后 繼 10第三章 例 從 鍵 盤(pán) 上 輸 入 張 三 同 學(xué) 五 門(mén) 課 程 的 成 績(jī) 67、92、 78、 83、 75, 計(jì) 算 出 平 均 成 績(jī) 并 輸 出 。對(duì) 下 面 的 程 序 進(jìn) 行 修 改 , 用 while代 替 for#include /*例 3.1的 程 序 */main() int i,sum,score; sum=0; for(i=1; i=5; i+) scanf
8、(%d, sum=sum+score; printf(n平 均 成 績(jī) 為 : %6.2f n, sum/5.0); 11第三章 例 計(jì) 算 1至 20之 間 的 奇 數(shù) 之 和 及 偶 數(shù) 之 和 。 說(shuō) 明 :判 斷 一 個(gè) 數(shù) n是 否 為 偶 數(shù) 的 常 用 方 法 為 : n%2=0。判 斷 一 個(gè) 數(shù) n是 否 為 某 個(gè) 數(shù) 的 倍 數(shù) 的 常 用 方 法為 : n%某 個(gè) 數(shù) =0, 如 n%5=0 可 用 于 判 斷 n是否 為 5的 倍 數(shù) 。 程 序 12第三章 例 :求 n的 值main() int n,sum=0; n=1; while(n=10) sum=sum+n
9、; n+; printf(1-10的 累 加 和 為 %d,sum);n=1 10 問(wèn) 題 :1.語(yǔ) 句 n=1; 能 放 在 循 環(huán) 體 內(nèi) 嗎 ?2.語(yǔ) 句 n=10 中 的 等 號(hào) 能 去 掉 嗎 ?3.語(yǔ) 句 n+ 能 去 掉 或 放 在 循 環(huán) 外 嗎 ?4.如 要 求 1到 10 的 累 乘 應(yīng) 怎 樣 修 改程 序 ?s如 何 修 改 程 序 可 求 2+4+6+ +10的 值先 判 斷 后 執(zhí) 行 循 環(huán) 體 13第三章 語(yǔ) 句 形 式 : do 語(yǔ) 句 ; while(表 達(dá) 式 ); 執(zhí) 行 過(guò) 程 : 先 執(zhí) 行 語(yǔ)句 , 后 判 斷 條 件 。表 達(dá) 式 的 值 為 非
10、 0時(shí) ,繼 續(xù) 執(zhí) 行 語(yǔ) 句 ; 表 達(dá)式 的 值 為 0時(shí) , 執(zhí) 行循 環(huán) 的 后 繼 。 可 以 是 復(fù) 合 語(yǔ) 句 , 其中 必 須 含 有 改 變 條 件表 達(dá) 式 值 的 語(yǔ) 句 14第三章 例 求 1! +2! +3! +4! + +20! 的 值 。 main()float n=1,sum=0,t=1; dot=t*n; sum=sum+t; n+; while(n=20); printf(1!+2!+3!+ + 20!=%e n , sum); 第 n次 循 環(huán) t的 值 sum的 值 n=20的 值1 1! 0+1! 真 (n=2)2 2! 1+2! 真 (n=3)3
11、3! 3+3! 真 (n=4) 4 4! 9+4! 真 (n=5)5 5! 33+5! 真 (n=6) 20 20! 假 (n=21) 結(jié) 束 循 環(huán) 15第三章 在 循 環(huán) 體 內(nèi) 又 包 含 另 一 個(gè) 完 整 的 循 環(huán) 結(jié) 構(gòu) 稱為 循 環(huán) 嵌 套 。 內(nèi) 層 循 環(huán) 中 再 包 含 其 它 循 環(huán) 結(jié)構(gòu) , 稱 為 多 重 循 環(huán) 嵌 套 。 C語(yǔ) 言 中 的 三 種循 環(huán) 語(yǔ) 句 ( for、while、 dowhile) 可 以 互 相嵌 套 , 構(gòu) 成 所 需的 多 重 循 環(huán) 結(jié) 構(gòu)循 環(huán) 嵌 套 時(shí) , 內(nèi) 層 循 環(huán) 必 須 被 完 全 包 含 于 外層 循 環(huán) 內(nèi) ,
12、不 允 許 循 環(huán) 結(jié) 構(gòu) 交 叉 。 16第三章 例 3.10 打 印 由 星 號(hào) 組 成 的 5行 5列 的 矩 形* * * * * * * * * * * * * * * * * * * * *以 下 循 環(huán) 語(yǔ) 句 可 在 同 一 行 上 輸 出 五 個(gè) 星 號(hào) : for(j=1;j=5;j+) printf(*);s若 讓 該 循 環(huán) 語(yǔ) 句 執(zhí) 行 五 次 , 且 每 執(zhí) 行 一 次 輸出 一 個(gè) 換 行 , 就 可 以 輸 出 五 行 五 列 星 號(hào)雙 重 循 環(huán) 的 執(zhí) 行 過(guò) 程 如 下 : i=1時(shí) , j=1,2,3,4,5, 輸 出 5個(gè) *并 換 行i=2時(shí) ,
13、j=1,2,3,4,5, 輸 出 5個(gè) *并 換 行i=3時(shí) , j=1,2,3,4,5, 輸 出 5個(gè) *并 換 行i=4時(shí) , j=1,2,3,4,5, 輸 出 5個(gè) *并 換 行i=5時(shí) , j=1,2,3,4,5, 輸 出 5個(gè) *并 換 行for(i=1;i=5;i+) for(j=1;j=5;j+) printf(*); printf(n); 多 重 循 環(huán) 的 執(zhí) 行 過(guò)程 為 : 外 循 環(huán) 跨 一 步 ,內(nèi) 循 環(huán) 轉(zhuǎn) 一 圈 17第三章 for(i=1;i=5;i+) for(j=1;j=5;j+) printf(*); printf(n); s要 打 印 如 下 圖 形
14、應(yīng) 如 何 修 改 下 面 的 雙 重 循 環(huán) :* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *要 求 : 在 VC+6.0環(huán) 境 下 , 通 過(guò) 師 生互 動(dòng) 的 形 式 完 成 該題 的 編 程 18第三章 語(yǔ) 句 形 式 : break;u執(zhí) 行 過(guò) 程 : 終 止 switch語(yǔ) 句 或 循 環(huán) 語(yǔ) 句 的 執(zhí)行 , 跳 出 當(dāng) 前 break所 在 的 控 制 結(jié) 構(gòu) , 轉(zhuǎn) 去執(zhí) 行 后 繼 語(yǔ) 句 。 double e=1.0,u=1.0; int
15、n; for(n=1; n=20; n+) u=u/n; e=e+u; if(u9 | ch0) continue; count+; printf(count=%d n,count); 在 while和 do-while循 環(huán) 結(jié) 構(gòu) 中 , continue立即 轉(zhuǎn) 去 檢 查 循 環(huán) 控 制 表 達(dá) 式 , 在 for循 環(huán) 結(jié) 構(gòu)中 , 則 立 即 轉(zhuǎn) 向 計(jì) 算 表 達(dá) 式 3, 對(duì) 循 環(huán) 控 制 變量 增 量 或 減 量 。 20第三章 例 :本 例 模 擬 了 一 個(gè) 物 體 的 自 由 落 體 過(guò) 程 。 從 “高 空 ” 釋 放 一 個(gè) 物 體 , 它 在 下 降 的 過(guò) 程
16、 中 速 度會(huì) 越 來(lái) 越 快 , 落 地 反 彈 后 在 上 升 的 過(guò) 程 中 它 的速 度 會(huì) 越 來(lái) 越 慢 。 圖 3-14顯 示 某 一 時(shí) 刻 物 體 所處 的 位 置 。 程 序 21第三章 語(yǔ) 句 while(!E); 中 的 表 達(dá) 式 ! E等 價(jià) 于 A)E=0 B)E!=1 C)E!=0 D)E=1 下 面 程 序 段 的 運(yùn) 行 結(jié) 果 是 _。a=1;b=2; c=2;while(abc) t=a;a=b;b=t;c-;printf(%d,%d,%d,a,b,c);A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1下 面 程 序 段 的 運(yùn) 行 結(jié) 果
17、 是 _。x=y=0;while(x10 if(x/3) x+;break; else continue; printf(%dn,x); 執(zhí) 行 以 下 程 序 后 , 輸 出 # 號(hào) 的 個(gè) 數(shù) 是 _。 main()int i,j; for(i=1;i5;i+) for(j=2;j=i;j+)putchar(#); 23第三章 本 章 詳 細(xì) 介 紹 了 循 環(huán) 結(jié) 構(gòu) 。 循 環(huán) 結(jié) 構(gòu) 包 括 for、while、 dowhile三 個(gè) 循 環(huán) 語(yǔ) 句 。 三 種 循 環(huán) 可以 用 來(lái) 處 理 同 一 問(wèn) 題 , 一 般 情 況 下 它 們 可 互 相代 替 , 但 設(shè) 置 的 表 達(dá) 式 條 件 會(huì) 有 所 不 同 。 讀 程 序main()int i,j; for(i=1;i5;i+) for(j=2;j=i;j+) putchar(#); 問(wèn) 題 :1.兩 層 循 環(huán) 各 執(zhí) 行 了 多 少 次 ? 2.程 序 運(yùn) 行 結(jié) 束 時(shí) 循 環(huán) 變 量 i和 j的 值 為 多 少 ? 24第三章 v復(fù) 習(xí) 教 材 第 三 章 內(nèi) 容v預(yù) 習(xí) 教 材 第 四 章 內(nèi) 容v上 機(jī) 實(shí) 習(xí) 內(nèi) 容 : 實(shí) 驗(yàn) 循 環(huán) 結(jié) 構(gòu)v完 成 第 三 章 的 全 部 習(xí) 題