




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第5章 循環(huán)結(jié)構(gòu)及其應用學習目標: 掌握循環(huán)結(jié)構(gòu)的應用場合,循環(huán)結(jié)構(gòu)的設(shè)計,循環(huán)語句的用法,設(shè)計循環(huán)結(jié)構(gòu)程序。學習內(nèi)容: while循環(huán),do-while循環(huán),for循環(huán),break語句,循環(huán)嵌套,循環(huán)結(jié)構(gòu)程序設(shè)計方法。5.1 一個循環(huán)結(jié)構(gòu)程序?qū)嵗?。要在計算機屏幕上輸出30個“*”,可以使用輸出函數(shù)printf()一次完成,但是程序中要重復輸入30次“*”。其實同樣的操作可以換一個思路完成,那就是讓計算機重復30次輸出一個“*”的工作,而輸出一個“*”的工作很容易用printf()語句來實現(xiàn)?!纠?-1】輸出30個“*”?!揪幊趟悸贰浚?)定義變量i,并賦初值為1,用i來進行計數(shù)器。(2)使用
2、循環(huán)結(jié)構(gòu)重復執(zhí)行輸出一個“*”的過程。(3)每次輸出一個“*”,讓計數(shù)器加1,當計數(shù)器超過30就停止重復工作?!境绦虼a】#include <stdio.h>main()int i=1;while(i<=30) printf("*");i+;printf("n");提示:本例中如果去掉語句i+;,就會出現(xiàn)死循環(huán)。5.2 實現(xiàn)循環(huán)結(jié)構(gòu)的語句C語言提供了三種實現(xiàn)循環(huán)結(jié)構(gòu)的語句:while語句、do-while語句和for語句。雖然3個語句的語法規(guī)則不同,但在使用上很相似,一般情況下可以相互轉(zhuǎn)換。當然它們有各自的特點,在實際應用中還是要根據(jù)具
3、體情況選擇恰當?shù)难h(huán)語句。5.2.1 while語句while語句用于當型循環(huán)結(jié)構(gòu),其一般形式為:while(表達式) 循環(huán)體語句while語句的執(zhí)行過程是:首先計算表達式的值,若結(jié)果為“真”(非零),則執(zhí)行循環(huán)體語句;然后再計算表達式的值,重復上述過程,直到表達式的值為“假”(零)時結(jié)束循環(huán),流程控制轉(zhuǎn)到while語句的下一條語句。小測驗:根據(jù)while語句的執(zhí)行過程,下面程序的輸出結(jié)果為: #include <stdio.h>main()int x=0,n=0;while(x<30)x=(x+1)*(x+1);n=n+1;printf("n=%dn",
4、n);【例5-2】顯示110的平方。【程序代碼】#include <stdio.h>main()int i=1;while(i<=10)printf("%d*%d=%dn",i,i,i*i);i+;使用while循環(huán)結(jié)構(gòu)時應注意以下幾點:(1)while循環(huán)的特點是先判斷條件后執(zhí)行循環(huán)體語句。(2)while循環(huán)中的表達式一般是關(guān)系表達式或邏輯表達式,也可以是其他任何合法的表達式。(3)循環(huán)體語句可以是一個語句,也可以是多個語句,當只有一個語句時,外層的大括號可以省略,如果循環(huán)體是多個語句時,一定要用花括號“”括起來,以復合語句的形式出現(xiàn)。(4)循環(huán)體內(nèi)一
5、定要有改變循環(huán)條件的語句,使循環(huán)趨于結(jié)束,否則循環(huán)將無休止地進行下去,即形成“死循環(huán)”。【例5-3】求1到100的自然數(shù)之和,即計算sum=1+2+100.【程序代碼】#include <stdio.h>main()int i,sum=0;i=1;sum=0;while(i<=100)sum+=i;i+;printf("sum=%dn",sum);小測驗:針對【例5-3】,思考下列問題:(1)是否可以不給sum和i賦初值?(2)是否可以將i+改成i=i+1?(3)是否可以將i+放置在sum=sum+i之前?(4)在循環(huán)結(jié)束后,i的值是多少?(5)如果求11
6、00之間的奇數(shù)和,即計算sum=1+3+5+99,程序該如何修改?(6)求sum=1-2+3-4+5-100,程序該如何修改?5.2.3 do-while語句do-while語句屬于直到型循環(huán),其一般形式為:do 循環(huán)體語句while(表達式);例如:下面是一個可以輸出30個“*”的do-while語句:i=1;doprintf("*");i+;while(i<=30);do-while語句的執(zhí)行過程是:首先執(zhí)行一次循環(huán)體語句,然后計算表達式(循環(huán)條件)的值,若結(jié)果為“真”(非零),返回執(zhí)行循環(huán)體語句,重復上述步驟,知道表達式的值為“假”(零)時結(jié)束循環(huán),流程控制轉(zhuǎn)到
7、while語句的下一條語句?!纠?-4】把【例5-3】(求1100的和)用do-while語句改寫?!境绦虼a】#include <stdio.h>main()int i=1,sum=0;dosum=sum+i;i+;while(i<=100);printf("sum=%dn",sum);使用do-while循環(huán)結(jié)構(gòu)是應注意以下幾點:(1)do-while循環(huán)結(jié)構(gòu)的特點是先執(zhí)行循環(huán)體后判斷條件,因此不管循環(huán)條件是否成立,循環(huán)體語句都至少被執(zhí)行一次。這是他與while循環(huán)的本質(zhì)區(qū)別。(2)不論循環(huán)體是一個語句還是多個語句,花括號“”都不要省略。(3)避免出現(xiàn)
8、“死循環(huán)”。(4)注意do-while循環(huán)最后的分號“;”不能省略。【例5-5】求n!,即求n的階乘,n由鍵盤輸入。#include <stdio.h>main()int i=1,n;long s=1;printf("please input n:");scanf("%d",&n);dos=s*i;i+;while(i<=n);printf("%d! = %ldn",n,s);小測驗:針對【例5-5】,思考下列問題:(1)為什么不給s賦初值0,而賦初值為1?(2)為什么要把變量s定義為long?(3)當輸入的
9、n值較大時,如20,程序會怎么樣呢?如何解決?5.2.3 for語句for語句屬于當型循環(huán),其一般形式為:for(表達式1; 表達式2; 表達式3)循環(huán)體語句 例如:下面是一個可以輸出30個“*”的for語句:for(i=1;i<=30;i+)printf("*");for語句的執(zhí)行過程是:(1)首先進行表達式1的計算。(2)判斷表達式2的值,若值為“真”(非零),則執(zhí)行循環(huán)體語句,然后轉(zhuǎn)(3)執(zhí)行;若為“假”(零),循環(huán)結(jié)束。(3)進行表達式3的計算,然后轉(zhuǎn)至第(2)步重復執(zhí)行。小測驗:根據(jù)for語句的執(zhí)行過程,寫出下面程序段的輸出結(jié)果。(1)for(i=1;i&l
10、t;=4;i+) printf("%dt",i);(2)for(x=15;x>10;x-=2) printf("%dn",x);【例5-6】把例5-3(求1100的和)用for語句改寫?!境绦虼a】#include <stdio.h>main()int i,sum=0;for(i=1;i<=100;i+)sum=sum+i;printf("sum=%dn",sum);本例中for語句的3個表達式實現(xiàn)了程序中的3個功能,即循環(huán)變量賦初值、循環(huán)條件和循環(huán)變量遞增,因此寫法更簡潔。小測驗:針對上面實例,思考下列問題:
11、(1)如果將i=1放置在for循環(huán)之前,即在for循環(huán)外提前對循環(huán)變量賦初值,那么for語句該怎么書寫?(2)修改程序,計算1+3+5+99的值。使用for語句時應注意以下幾點:(1)for循環(huán)相當于下面的while循環(huán):表達式1:while(表達式2)循環(huán)體語句 表達式3;(2)for語句有3個表達式,它們之間由分號“;”分隔,不能更換成其他分隔符號。(3)有時根據(jù)需要可以將for語句格式中的部分或所有表達式省略,比如可以寫成如下形式:for( ;表達式2;表達式3)循環(huán)體語句例5-6中代碼可以改寫為:int i=1,sum=0;for( ;i<=100;i+)sum=sum+I;fo
12、r語句還可以寫成其他多種形式,不過建議最好還是使用規(guī)范的語句形式。由于經(jīng)常用表達式1進行循環(huán)變量的賦初值,用表達式2控制循環(huán)結(jié)束,用表達式3控制循環(huán)變量的遞增或遞減,所以規(guī)范的for語句形式為:for(循環(huán)控制變量賦初值; 循環(huán)條件;循環(huán)控制變量增/減值)循環(huán)體語句【例5-7】把100200之間的不能被3整除的數(shù)輸出。【程序代碼】#include <stdio.h>main()int n;for(n=100;n<=200;n+)if(n%3!=0)printf("%d ",n);小測驗:(1)例5-7中輸出的數(shù)據(jù)比較多,如果要求每行只輸出10個數(shù),程序應該
13、如何修改?(2)在所有的兩位數(shù)中,個位數(shù)比十位數(shù)大的兩位數(shù)有多少個?是哪些數(shù)?編寫程序完成?!纠?-8】判斷正整數(shù)m是不是素數(shù),m由鍵盤輸入?!境绦虼a】#include <stdio.h>main()int m,i,flag=0;scanf("%d",&m);for(i=2;i<=m-1;i+)if(m%i=0)flag=1;break;if(flag=0)printf("%d是素數(shù)!n",m);elseprintf("%d不是素數(shù)! n",m);本例中用到了break語句。在switch語句中我們已經(jīng)接觸
14、過break語句,它的功能是跳出switch語句,那么在循環(huán)結(jié)構(gòu)中使用break語句,其作用是跳出循環(huán)語句。需要注意的是:一般只有在switch結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中使用break語句,其作用是跳出該結(jié)構(gòu)。小測驗:素數(shù)判斷中能否不使用break語句?【例5-9】程序預期輸出半徑為110的圓的面積,但是如果有面積值超過100時,則停止執(zhí)行?!境绦虼a】#include <stdio.h>#define PI 3.14main()int r;float area;for(r=1;r<=10;r+)area=PI*r*r;if(area>100)break;printf("
15、;半徑為%d的圓面積為:%fn",r,area);5.3 循環(huán)嵌套一個循環(huán)體內(nèi)又包含了另一個完整的循環(huán)結(jié)構(gòu),這種循環(huán)稱為循環(huán)的嵌套。使用循環(huán)嵌套時,三種循環(huán)語句可以自身嵌套,也可以互相嵌套。例如:分析下面程序段,理解循環(huán)嵌套。(1)for(k=1;k<=5;i+)printf("*");輸出結(jié)果為:*(2)for(i=1;i<=3;i+)for(k=1;k<=5;k+)printf("*");輸出結(jié)果為:*顯然,上面程序是for循環(huán)中又包含了一個for循環(huán),屬于兩層循環(huán)結(jié)構(gòu)。外層循環(huán)用變量i控制,內(nèi)循環(huán)用變量k控制,外循環(huán)i從
16、13循環(huán)3次,外循環(huán)每執(zhí)行一次,內(nèi)循環(huán)k從15循環(huán)5次,所以輸出結(jié)果為3*5=15個“*”。(3)for(i=1;i<=3;i+)for(k=1;k<=5;k+)printf("*"); printf("n"); 輸出結(jié)果為:*可以看出,上面程序段仍然輸出15個“*”,不過因為加入了換行操作,輸出的是3行5列的“*”方陣。小測驗:如果要輸出以下效果,循環(huán)該如何設(shè)計?*【程序代碼】#include <stdio.h>main()int i,j;for(i=1;i<=5;i+)for(j=1;j<=i;j+)printf("*");printf("n");【例5-14】輸出100200之間(包括100和200)的所有素數(shù)?!境绦虼a】#include <stdio.h>main()int m,i,flag,n=0;for(m=100;m<=200;m+)flag=0;for(i=2;i&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《邁向卓越的基石:成功關(guān)鍵因素》課件
- 吉林省松原市前郭縣2024~2025學年度下學期東北三省精準教學2025年4月高三聯(lián)考 化學 強化卷(含答題卡及解析)
- 廣東省2025年高三高考模擬測試二地理試卷(含答案)
- 短期財務助理協(xié)議
- 決策溝通協(xié)議
- 四其他票務事務的處理一車票遺失二無效車票課件
- 鐵路班組管理S班組精細化管理課件
- 鐵路市場營銷運輸消費者購買決策過程課件
- 鐵道概論授課崔桂蘭71課件
- 鐵路集裝箱運輸組織單元鐵路集裝箱運輸辦理條件課件
- 礦井粉塵防治
- 影像醫(yī)學科影像質(zhì)量評價與持續(xù)改進工作一年記錄(PDCA)
- 主體工程實體質(zhì)量實測實量檢查表
- 高中物理選擇性必修一同步練習冊電子版
- 基于JSP的校園網(wǎng)站的設(shè)計與實現(xiàn)-畢業(yè)設(shè)計
- V帶傳動二級圓柱斜齒輪減速器設(shè)計說明書
- 單位(子單位)工程質(zhì)量竣工驗收記錄表
- GB/T 20564.4-2022汽車用高強度冷連軋鋼板及鋼帶第4部分:低合金高強度鋼
- 第6章小區(qū)域控制測量
- GRS-化學品管理手冊
- GB/T 23260-2009帶自粘層的防水卷材
評論
0/150
提交評論