《循環(huán)結構程序設計》PPT課件.pptx
《《循環(huán)結構程序設計》PPT課件.pptx》由會員分享,可在線閱讀,更多相關《《循環(huán)結構程序設計》PPT課件.pptx(36頁珍藏版)》請在裝配圖網上搜索。
1、第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 1 第 5章 循 環(huán) 結 構 程 序 設 計教 學 要 求 : 通 過 本 章 的 學 習 要 求 學 生 掌 握 循 環(huán) 結 構 的 三 種 語 句 的 基 本語 法 及 循 環(huán) 執(zhí) 行 過 程 ; 掌 握 break語 句 和 continue語 句 在 循 環(huán) 控制 語 句 的 功 能 ; 能 運 用 循 環(huán) 結 構 語 句 進 行 一 般 的 程 序 設 計 。教 學 內 容 : 5.1 while語 句 5.2 do-while語 句 5.3 for語 句 5.4 break語 句 和 continue語
2、 句 5.5 循 環(huán) 嵌 套 結 構 5.6 程 序 設 計 舉 例 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 2 問 題 : 要 求 在 屏 幕 上 按 行 打 印 1 10???采 用 順 序 結 構 寫 10行 代 碼 實 現(xiàn) 。 程 序 代 碼 如 下 :printf(%dn,1 );printf(%dn,2 );printf(%dn,3 );printf(%dn,4 );printf(%dn,5 );printf(%dn,6 );printf(%dn,7 );printf(%dn,8 ); printf(%dn,9 );printf(%dn,10
3、 ); int i=1; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);修 改 為 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 3 問 題 : 要 求 在 屏 幕 上 按 行 打 印 1 10。 int i=1; printf(%dn,i);i+; prin
4、tf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);i+; printf(%dn,i);能 否 將 重 復 的 語 句 合 并 ? #includestdio.hint main() int i=1;while(i=10) printf(%dn,i); i+;return 0; 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 4 循 環(huán) 語 句
5、的 三 種 結 構 :一 、 當 型 循 環(huán) 的 一 般 形 式 : while(表 達 式 )語 句 ;二 、 直 到 型 循 環(huán) 的 一 般 形 式 : do 語 句 while(表 達 式 );三 、 for循 環(huán) 語 句 的 一 般 形 式 : for(表 達 式 1;表 達 式 2;表 達 式 3) 語 句 ; 2014.10.2013建 筑 本 3-46 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 5 5.1 while語 句1.while語 句 的 形 式while (表 達 式 ) 循 環(huán) 體 表 達 式 : 是 循 環(huán) 能 進 行 的 條
6、件 , 可 以 是 任 何 類 型 的 , 一 般 是 關系 表 達 式 或 邏 輯 表 達 式 或 其 組 合 。循 環(huán) 體 : 是 重 復 執(zhí) 行 的 程 序 段 , 可 以 是 單 條 語 句 , 也 可 以 是 復合 語 句 , 若 是 復 合 語 句 , 必 須 用 一 對 花 括 號 “ ” 括 起 來 。 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 6 2.while語 句 的 執(zhí) 行 過 程首 先 計 算 表 達 式 的 值 , 如 果 為 真 ( 非 0) , 執(zhí) 行 循 環(huán) 體 , 再 判 斷表 達 式 。 如 果 表 達 式 的 值 為
7、 假 ( 0) , 結 束 循 環(huán) , 執(zhí) 行 while語句 后 面 的 語 句 。 while語 句 的 執(zhí) 行 流 程 圖 如 下 :while語 句 的 特 點 是 :先 判 斷 表 達 式 , 為 真 才 執(zhí) 行 循 環(huán) 體 語 句 ,否 則 不 執(zhí) 行 。 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 7 3.while語 句 的 應 用【 例 題 5.1】 用 while語 句 求 1+2+3+ +100的 和 。算 法 分 析 : 程 序 分 成 3部 分 : 初 始 化 ; 求 和 ; 輸 出步 驟 1: sum=0;步 驟 2.1: sum
8、=sum+1;步 驟 2.2: sum=sum+2;步 驟 2.3: sum=sum+3; 步 驟 2.99: sum=sum+99;步 驟 2.100: sum=sum+100;步 驟 3: 輸 出 sum 步 驟 1: sum=0, i=1;步 驟 2.1: sum=sum+i; i+;步 驟 2.2: sum=sum+i; i+;步 驟 2.3: sum=sum+i; i+; 步 驟 2.99: sum=sum+i; i+;步 驟 2.100: sum=sum+i; i+;步 驟 3: 輸 出 sum優(yōu) 化 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日
9、8 算 法 分 析 : 程 序 分 成 3部 分 : 初 始 化 ; 求 和 ; 輸 出步 驟 1: 定 義 i=1和 sum=0;步 驟 2.1:若 i100時 ,結 束 求 累 加 和 。 循 環(huán) 條 件是 i100時 ,結 束 求 累 加 和 。 循 環(huán) 條 件 是i=100即 表 達 式 2, 表 達 式 1就 是 對 變量 i賦 的 初 值 1, 循 環(huán) 體 是 求 累 加 和sum=sum+i。 實 現(xiàn) 算 法 的 流 程 圖 如 圖所 示 。 程 序 代 碼 : 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 16 4.for語 句 的 變 形fo
10、r 語句的變形 for語 句 中 的 表 達 式 可 以 省 略 , 但 分 號 不 省 略for語 句 中 的 表 達 式 可 以 是 逗 號 表 達 式for語 句 中 的 循 環(huán) 體 可 以 是 空 語 句for(sum=0, i=1; i=100; i+)sum=sum+i;for(sum=0, i=1; i=100; sum+=i, i+) ;省 略 表 達 式 1省 略 表 達 式 3省 略 表 達 式 1和 表 達 式 3省 略 表 達 式 1、 表 達 式 2和 表 達 式 3(如 何 控 制 循 環(huán) ) 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星
11、期 日 17 5.4 for語 句 與 while語 句 和 do-while語 句 比 較3種 循 環(huán) 結 構 語 句 都 能 處 理 同 樣 的 問 題 , 可 以 相 互 替 換 。 其 中for語 句 主 要 用 在 循 環(huán) 次 數 已 知 情 況 下 , while語 句 和 do-while語 句 一 般 用 在 循 環(huán) 次 數 在 循 環(huán) 過 程 中 才 能 確 定 的 情 形 。while語 句 和 do-while語 句 處 理 問 題 較 相 近 , while語 句 是 先 判斷 循 環(huán) 條 件 , 后 執(zhí) 行 循 環(huán) 體 ; do-while語 句 是 先 執(zhí) 行 循
12、環(huán) 體 ,后 判 斷 循 環(huán) 條 件 。for語 句 與 while語 句 和 do-while語 句 , 從 形 式 上 看 有 區(qū) 別 , 但本 質 是 相 同 的 。 for語 句 與 while語 句 的 執(zhí) 行 順 序 是 相 同 的 。 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 18 5.5 break語 句 與 continue語 句程 序 中 語 句 通 常 按 語 句 功 能 所 定 義 的 方 向 執(zhí) 行 。 現(xiàn) 實 中 往 往 需要 改 變 程 序 的 正 常 流 向 , 則 C語 言 提 供 了 輔 助 控 制 語 句 break語
13、句 與 continue語 句 。5.5.1 break語 句基 本 形 式 break;功 能 : 退 出 當 前 循 環(huán) 或 當 前 switch結 構 , 提 前 結 束 本 層 循 環(huán) 或本 層 switch結 構 。只 能 在 循 環(huán) 結 構 內 和 switch結 構 內 使 用 break語 句 , 不 得 用 于 其他 地 方 。 作 用 是 跳 出 當 前 循 環(huán) 或 當 前 switch結 構 。 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 19 【 例 題 5.5】 在 全 系 1000名 學 生 中 , 征集 慈 善 募 捐 ,當 募
14、 捐 款 達 到 10萬 元 時 就停 止 募 捐 活 動 , 統(tǒng) 計 此 時 捐 款 的 人 數 ,以 及 平 均 每 人 捐 款 的 數 目 。 算 法 分 析 :學 生 捐 款 是 個 累 加 過 程 但 累 加 到 10萬 元停 止 。 這 一 過 程 中 要 處 理 : 學 生 捐 款 數、 累 加 捐 款 數 、 判 斷 累 加 捐 款 數 達 到 10萬 沒 有 這 三 件 事 即 循 環(huán) 不 變 式 。 當 累 加捐 款 達 到 10萬 元 , 停 止 募 捐 活 動 即 提 前結 束 循 環(huán) 。 實 現(xiàn) 算 法 流 程 圖 :程 序 代 碼 : 第 5章 循 環(huán) 結 構 程
15、序 設 計 2021年 4月 18日 星 期 日 20 #include #define SUM 100000int main()float amount,aver,total; int i; for(i=1,total=0;i=SUM) break; aver=total / i ; printf(num=%dnaver=%10.2fn ,i,aver); return 0; please enter amount: 12000please enter amount: 24600please enter amount: 3200please enter amount: 5643please
16、enter amount: 21900please enter amount: 12345please enter amount: 23000num=7aver=14669.71 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 21 5.5.2 continue語 句基 本 形 式 : continue;功 能 : continue語 句 作 用 是 結 束 本 次循 環(huán) 即 跳 過 本 次 循 環(huán) 體 中 其 余 未 執(zhí) 行的 語 句 , 提 前 進 行 下 一 次 循 環(huán) 。continue語 句 只 能 用 在 for、 while和do-while循 環(huán)
17、 體 中 , 常 與 if語 句 一 起使 用 , 用 來 加 速 循 環(huán) 。【 例 題 5.6】 編 寫 程 序 : 求 100 200之間 的 不 能 被 3整 除 的 數 , 并 按 每 行 10個數 的 格 式 輸 出 。算 法 分 析 : n%3, 為 0, 不 輸 出 用continue實 現(xiàn) ; 不 為 0輸 出 用 printf實現(xiàn) 。 實 現(xiàn) 算 法 流 程 圖 :程 序 代 碼 : #include stdio.hvoid main( )int n; for(n=100;n=200;n+) if(n%3=0) printf(n);continue; printf(%5d,n
18、); 2014.11.313建 筑 本 3-47 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 22 5.5.3 break語 句 和 continue語 句 的 區(qū) 別continue語 句 只 結 束 本 次 循 環(huán) , 然 后 進 行 下 一 次 循 環(huán) ;break: 退 出 包 含 它 的 那 一 層 循 環(huán) 。說 明 : break和continue語 句 一 般 和 if語 句 聯(lián) 合 使 用 , 若 在 循環(huán) 體 內 單 獨 使 用 將 無 任何 意 義 。#include stdio.hvoid main( )int n; for(n=100
19、;n=200;n+) if(n%3=0) printf(n);break; printf(%5d,n); 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 23 5.6 循 環(huán) 的 嵌 套 結 構循 環(huán) 的 嵌 套 是 指 在 一 個 循 環(huán) 體 內 又 包 含 一 個 或 幾 個 的 循 環(huán) 體 結構 的 形 式 。 一 般 來 說 有 雙 重 循 環(huán) 嵌 套 和 多 重 循 環(huán) 嵌 套 。 while、do-while、 for三 種 循 環(huán) 可 相 互 嵌 套 , 也 可 是 自 己 的 嵌 套 。 內 循環(huán) 必 須 被 包 含 在 外 循 環(huán) 體 之 內
20、, 不 允 許 出 現(xiàn) 交 叉 現(xiàn) 象 。 同 學 們分 析 下 列 循 環(huán) 嵌 套 結 構 的 合 法 性 。whiledo While forfor fordowhile 合 法 合 法 非 法 ( 交 叉 ) 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 24 5.6.1 雙 重 循 環(huán) 的 嵌 套雙 重 循 環(huán) 即 只 有 兩 層 循 環(huán) : 內 循 環(huán) 和 外 循 環(huán) 。 雙 重 循 環(huán) 的 執(zhí) 行過 程 是 : 首 先 從 外 層 循 環(huán) 開 始 執(zhí) 行 , 外 層 循 環(huán) 每 執(zhí) 行 一 次 , 暫停 , 轉 去 執(zhí) 行 內 層 循 環(huán) , 內
21、層 循 環(huán) 要 將 所 有 規(guī) 定 的 循 環(huán) 次 數 全部 執(zhí) 行 完 畢 , 返 回 外 層 循 環(huán) , 外 層 循 環(huán) 才 能 開 始 下 一 次 循 環(huán) ,依 此 類 推 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 25 1.外 層 循 環(huán) 變 量 與 內 層 循 環(huán) 變 量 相 互 獨 立【 例 題 5.7】 編 寫 程 序 : 輸 出 以 下 4 5的 矩 陣 。1 2 3 4 52 4 6 8 103 6 9 12 154 8 12 16 20算 法 分 析 : 定 義 兩 個 變 量 i,j分 別 控 制 行 , 列 。輸 出 1行 后 ,
22、回 車 再 輸 出 下 1行 , 在 輸 出 行 的 過程 中 又 要 輸 出 5列 的 元 素 值 , 每 個 元 素 值 =元 素所 在 行 值 *元 素 所 在 列 值 。 因 此 外 循 環(huán) 控 制 行 ,內 循 環(huán) 控 制 列 。 實 現(xiàn) 算 法 流 程 圖 :程 序 代 碼 : 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 26 #include int main()int i,j,n=0;for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (n); printf (%dt,i*j); pr
23、intf(n);return 0; i j i*j n1 1 1 02 2 13 3 24 4 35 5 46 52 1 22 4 63 6 74 8 85 10 96 103 1 32 6 113 9 124 12 13 5 15 146 154 1 42 8 163 12 174 16 185 20 19 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 27 【 例 題 5.8】 設 計 輸 出 如 下 九 九 乘 法 表 的 程 序 。算法分析:乘法表共9行,第n行就有n個式子,每個式子與所在行,列有關。#include stdio.hint main(
24、)int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+) printf(%d*%d=%d, ,j,i,j*i);printf(n); return 0; i j i*j1 1 1*1=1 2 1,2 1*2=2,2*2=43 1,2,3 1*3=3,2*3=6,3*3=94 1,2,3,4 1*4=4,2*4=8,3*4=12,4*4=165 1,2,3,4,5 1*5=5,2*5=10,3*5=15,4*5=20,5*5=256 1,2,3,4,5,6 1*6=6,2*6=12,3*6=18,4*6=24,5*6=30,6*6=36,7 1,2,3,4,5,6,7 1*
25、7=7,2*7=14,3*7=21,4*7=28,5*7=35,6*7=42,7*7=498 1,2,3,4,5,6,7,8 1*8=8,2*8=16,3*8=24,4*8=32,5*8=40,6*8=48,7*8=56,8*8=649 1,2,3,4,5,6,7,8,91*9=9,2*9-18,3*9=27,4*9=36,5*9=45,6*9=54,7*9=63,8*9=72,9*9=81 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 28 5.6.2 多 重 循 環(huán) 的 嵌 套多 重 循 環(huán) 是 指 兩 層 及 兩 層 以 上 的 循 環(huán) 結 構 ?!?例
26、 題 5.9】 編 寫 程 序 : 用 1、 2、 3、 4四 個 數 字 ,能 組 成 多 少 個互 不 相 同 且 無 重 復 數 字 的 三 位 數 ? 并 按 每 行 10個 輸 出 。算 法 分 析 : 組 成 的 三 位 數 的 百 位 、 十 位 、 個 位 分 別 是 給 定 的 四個 數 中 之 一 。 可 定 義 表 示 百 位 、 十 位 和 個 位 的 變 量 分 別 是 i,j,k,它 們 的 取 值 分 別 是 1到 4中 其 一 , 但 它 們 互 不 相 等 。 這 種 算 法 稱窮 舉 法 或 測 試 法 。程 序 代 碼 : 第 5章 循 環(huán) 結 構 程 序
27、 設 計 2021年 4月 18日 星 期 日 29 有1、2、3、4四個數字,能組成多少個互不相同且無重復數字的三位數,并輸出它們的結果。算法分析:填在百位、十位、個位的數字由1、2、3、4組成,可設三個變量;i表示百位,j表示十位,k表示個位,它們分別取值從1-4,通過循環(huán)列出所有可能的組合。#include stdio.hint main( )int i,j,k;for(i=1;i5;i+)for(j=1;j5;j+)for(k=1;k=1e-6)pi=pi+t; n=n+2;s=-s; t=s/n;pi=pi*4; printf(pi=%10.6fn,pi); 運 行 結 果 : pi
28、=3.141397 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 32 【 例 題 5.12】 編 寫 程 序 :通 過 鍵 盤 輸 入 任 意一 個 整 數 , 要 求 反 序 輸 出 該 整 數 。算 法 分 析 : 如 果 輸 入 一 個 12345, 則 要 求反 序 輸 出 54321, 可 采 用 下 列 方 法 實 現(xiàn) 。第 1步 : 12345%10=5 12345/10=1234第 2步 : 1234%10 =4 1234/10=123第 3步 : 123%10 =3 123/10=12第 4步 : 12%10 =2 12/10=1第 5步
29、: 1%10 =1 1/10=0通 過 5步 就 可 以 將 一 個 5位 數 拆 分 開 來 , 并且 每 一 步 所 做 操 作 相 同 即 先 除 10取 余 , 然后 再 除 10取 整 , 這 就 是 循 環(huán) 不 變 式 , 到 第5步 整 除 10結 果 為 0時 , 所 有 的 數 拆 分 完 ,說 明 循 環(huán) 能 進 行 的 條 件 是 被 10整 除 的 數 不為 0。 程 序 代 碼 : 72014.11.513建 筑 本 3-48 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 33 #include int main()int n1,n2
30、; printf(input to n2n);scanf(%d,while(n2!=0)n1=n2%10; n2=n2/10; printf(%d,n1); printf(n); return 0; input to n21234554321 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 34 【 例 題 5.15】 編 寫 程 序 : 輸 入 一 個 大 于 3的 整 數 n, 判 定 它 是 否 為 素 數 ( prime, 又稱 質 數 ) 。算 法 分 析 :素 數 :除 1和 自 身 外 不 能 被 任 何 數 整 除 的 數 。判 斷 n是 否 為
31、 素 數 的 方 法 :讓 n被 i除 (i的 值從 2到 n-1),如 果 在 這 個 區(qū) 間 內 一 旦 發(fā) 現(xiàn) 有一 個 數 被 整 除 了 ,表 示 n不 是 素 數 ,后 面 被 i整 除 的 步 驟 停 止 , 如 果 這 個 區(qū) 間 內 沒 有一 個 數 能 夠 被 i整 除 , 直 到 i的 值 等 于 n,循 環(huán) 正 常 結 束 , 表 明 n是 素 數 。程 序 代 碼 : 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 35 #include stdio.hint main( )int n,i;printf(n=?);scanf(%d, f
32、or(i=2;i=n-1;i+)if(n%i=0) break;if(in)printf(%d is not a prime n, n);else printf(%d is a prime n, n); 第 5章 循 環(huán) 結 構 程 序 設 計 2021年 4月 18日 星 期 日 36 本 章 小 結 通 過 本 章 學 習 要 求 熟 練 掌 握 三 種 循 環(huán) 控 制 語 句 的 格 式 語 法及 應 用 ; 熟 練 掌 握 break語 句 和 continue語 句 在 循 環(huán) 中 應 用 ; 熟練 掌 握 基 本 的 循 環(huán) 嵌 套 程 序 的 設 計 方 法 ; 熟 練 掌 握 程 序 設 計 的常 用 算 法 。 能 熟 練 編 寫 一 般 的 程 序 。作 業(yè) : P99頁 : 三 、 代 碼 設 計 題 1 10小 題
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。