




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4章循環結構程序設計信息工程學院主講人:XXX內容提要41
循環結構程序舉例2while語句實現循環結構423do-while語句實現循環結構42for語句實現循環結構45幾種循環結構的比較244442循環的嵌套2427改變循環執行的狀態424464.1循環結構程序舉例首先,考慮這樣一個問題:在屏幕上依次輸出整數1~20,每兩個整數中間空一個格。使用順序結構,可以這樣解決這個問題:毫無疑問,這個程序的語法是正確的,編譯、運行后可解決問題。但是這并不是一個好的程序,因為這樣的程序有一定的局限性。如果題目要求輸出整數1~2000,那又該如何編寫呢?這時就可以運用循環結構程序設計的思想。4.1循環結構程序舉例在程序設計中,但凡是重復性的工作,都要想辦法用循環語句來實現。比如,在這個問題上,解決的思路就應該是從輸出1開始,每次輸出一個比前一個數大1的整數,重復循環20次。使用循環結構來解決問題,首先要定義一個循環變量i,從1到20,循環剛好進行20次。i的初值是1,當i小于等于20時,循環結構做兩件事:輸出i值,以及將i增加1。由于每次循環使i增加1,i將逐漸增加,增加到21時,便不再滿足i小于等于20的循環條件,則循環結束。4.1循環結構程序舉例通過上述實例可知,在程序中僅僅使用順序結構和選擇結構是遠遠不夠的,還需要用到循環結構。因為在日常生活中或者是處理程序問題時,經常會出現許多需要重復處理的問題。在例4.1中,可以看到,使用循環結構(如while語句)可以更加方便簡潔地輸出1~20的整數。雖然這個問題使用順序結構也可以解決,但是使用順序結構存在一個很大的弊端,那就是如果問題中需要輸出一個更大范圍的整數,如1~20000,使用順序結構程序就會非常冗長,工作量也會明顯增大,且不便于閱讀與維護。4.2while語句實現循環結構
while語句的一般形式如下:
while(表達式)語句
while語句的功能:
首先計算表達式的值,如果表達式的值非零(真),那么執行“語句”,然后再次計算表達式的值,重復執行此過程,直到表達式的值為零(假),循環結束。重復執行的語句稱為循環體,表達式稱為循環判別表達式。while語句的流程圖如圖4-3所示。4.2while語句實現循環結構【例4.2】用while語句求1+2+3+…+100的值。算法分析:
(1)此題有一個明顯的特征,即重復執行加法動作,是將100個數進行累加的問題。那么就可以想到使用循環結構來解決,通過循環執行加法運算,執行100次。(2)接下來分析累加的數值有什么變化規律。通過觀察,可以發現累加的數都有一個規律,就是后一個數等于前一個數加1。所以,可以在每次循環加法運算的同時,對累加的數進行自加1操作,得到下一個數。
4.2while語句實現循環結構流程圖:代碼如下:
4.2while語句實現循環結構使用while語句時,需要注意以下問題。(1)循環次數的控制要正確。使用循環結構時,可以通過循環變量來控制循環次數,例4.1和例4.2都是通過循環變量i來控制循環次數的,前者是20次,后者是100次。(2)循環體包含一個以上的語句時,一定要用{}括起來,否則,程序只將第一條語句作為循環體。(3)在循環體內要有使循環趨于結束的語句,否則,可能導致無限循環。4.3do-while語句實現循環結構do-while語句的一般形式如下:while語句的功能:先執行“語句”,再計算表達式的值。如果表達式的值為非零(真),繼續執行“語句”,直到表達式的值為零(假),循環結束。流程圖:4.3do-while語句實現循環結構注意:do-while語句與while語句的區別在于,do-while語句先執行一次循環體,再進行表達式的判斷,因此循環體中的語句至少要執行一次。在設計程序時,如果不知道重復執行的次數,而且第一次必須執行時,常采用do-while語句。理解了do-while語句與while語句之間的區別之后,可以將例4.1和例4.2采用do-while語句的形式進行編寫。4.3do-while語句實現循環結構【例4.3】用do-while語句解決“在屏幕上輸出整數1~20”的問題。4.3do-while語句實現循環結構【例4.4】用do-while語句求1+2+3+…+100的值。4.3do-while語句實現循環結構使用do-while語句時,需要注意以下問題。(1)為了避免誤讀,do-while語句的循環體中即使只有一條語句,也要用{}括起來。(2)使用do-while語句時切勿忘記while(表達式)后需要添加“;”。4.4for語句實現循環結構for語句一般形式如下:流程圖:
4.4for語句實現循環結構通過流程圖可以看出,for語句實際等價于下面的while語句:4.4for語句實現循環結構for語句中,3個表達式的作用如下。表達式1:設置初始條件,只執行一次。可以為0個、1個或者多個變量設置初值。表達式2:是循環條件判別表達式,用來判斷是否繼續循環。每次執行循環體前,先執行此表達式,決定是否繼續執行循環體。表達式3:作為循環中的調整,用來設置循環變量的變化方式并修改循環變量。因此,for語句的功能可以用下面的過程來描述。(1)計算表達式1。(2)計算表達式2,判斷表達式2是否為真,若為真,則執行循環體中的“語句”,跳轉到(3)執行。若為假,則循環結束,退出循環。(3)計算表達式3。(4)跳轉到(2)執行。4.4for語句實現循環結構【例4.5】用for語句求1+2+3+…+100的值。4.4for語句實現循環結構使用for語句時,需要注意以下問題。(1)for循環中的表達式1(循環變量賦初值)、表達式2(循環條件)、表達式3(循環變量增量)都是選擇項,可以省略,但“;”不能省略。(2)省略表達式1(為循環變量賦初值),表示不對循環控制變量賦初值。(3)省略表達式2(循環條件),表示不對循環控制變量檢測,注意可能成為死循環。例如:for(i=1;;i++)sum=sum+i;相當于:i=1;while(1){sum=sum+i;i++;}4.4for語句實現循環結構4)省略表達式3(循環變量增量),則不對循環控制變量進行修改,這時可在語句體中加入修改循環控制變量的語句。例如:for(i=1;i<=100;){sum=sum+i;i++;}(5)省略表達式1(為循環變量賦初值)和表達式3(循環變量增量)。例如:for(;i<=100;){sum=sum+i;i++;}相當于:
while(i<=100) {sum=sum+i; i++;}4.4for語句實現循環結構(6)3個表達式都省略。例如:for(;;)相當于:while(1)(7)表達式1可以是設置循環變量初值的賦值表達式,也可以是其他表達式。例如:for(sum=0;i<=100;i++)sum=sum+i;(8)表達式1和表達式3可以是一個簡單表達式,也可以是逗號表達式。(9)表達式2一般是關系表達式或邏輯表達式,但也可是數值表達式或字符表達式,只要其值非零,就執行循環體。例如:for(i=0;(c=getchar())!=’\n’;i+=c);又如:for(;(c=getchar())!=’\n’;)printf("%c",c);4.5幾種循環結構的比較首先,3種循環結構可以用來處理同一個問題,一般情況下,它們是可以相互替換的。但是,具體的語法結構仍然有些不同,比如在while循環和do-while循環中,只在while后面的圓括號內指定循環條件,若想要使循環能夠正常結束,避免出現死循環現象,則應該在循環體中包含可以使循環趨于結束的語句(如i++,i??等)。但是for循環語句便無須此類操作,因為for語句中的表達式3就包含了使循環趨于結束的操作。在用while和do-while循環時,循環變量的初始化操作必須在while語句和do-while語句之前完成。而for語句可以在表達式1中實現循環變量的初始化。4.6循環結構的嵌套循環的嵌套又稱多重循環,就是在一個循環體內包含另外一個循環體。3種循環結構(while循環、do-while循環和for循環),不僅可以實現自身循環嵌套,還可以相互嵌套。下面,來看一下常見的幾種循環嵌套形式,如圖4-12所示。4.6循環結構的嵌套幾種常見的循環嵌套形式:4.7改變循環執行的狀態以上介紹的各種循環結構的例子都是根據事先指定的循環條件正常執行及終止的循環。但是在某種情況下,必須提前結束正在執行的循環操作,又該如何處理呢?4.7.1break語句提前終止循環break語句在前面介紹switch語句時出現過,它也可以用于循環語句。break語句的語法格式為:break;break語句用于switch語句時,將直接跳出switch語句。break語句用于循環體時,將終止語句所在的循環,從包含它的循環語句(while、do-while、for)中退出,執行循環語句后的下一條語句。4.7.1break語句提前終止循環【例4.6】全系1000名學生進行慈善募捐,當總額達到10萬元時結束,統計此時捐款的人數,以及平均每人捐款的數額。4.7.2continue語句提前結束本次循環循環結構中不單單只有希望終止整個循環的操作,有時是希望可以提前結束當前的循環,而緊接著繼續執行下一次循環操作。這時就需要用到continue語句。continue語句一般形式如下:continue;continue語句的功能:使continue語句所在的循環立即結束本輪循環而開始下一輪循環(即本次循環中continue后面的語句不再執行)。continue語句用在while和do-while語句中與用在for語句中略有不同,在for語句中將終止本次循環體運行,但是仍要計算表達式3。4.7.2continue語句提前結束本次循環【例4.7】要求輸出100~200之間不能被3整除的數。4.7.3break語句和continue語句的區別根據以上分析可知,continue語句只結束本次循環,而不終止整個循環。而break語句是終止整個循環,不再執行循環體。通過流程圖可以更加直觀地看到兩者之間的區別,如圖4-15所示。本章小結(1)while語句語法格式如下:while(表達式)語句執行過程:先計算表達式的值,若值為真(非0),則執行循環體語句,否則退出循環。(2)do-while語句語法格式如下:do語句while(表達式);執行過程:先執行一次循環體語句,然后判斷表達式的值,若值為真(非0),則繼續執行循環,否則終止循環。do-while語句的循環體至少被執行一次。本章小結(3)for語句語法格式如下:for(表達式1;表達式2;表達式3)語句執行過
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 茂名職業技術學院《互聯網+醫療》2023-2024學年第一學期期末試卷
- 手術室與病房交接流程
- 教育培訓機構宣傳規范與風險防范
- 2025地暖系統安裝合同范本
- 2025年上海市果木種植購買合同范本
- 2025煤炭供應合同
- 2025物業管理有限公司合同協議書
- 2025經濟師道路運輸行業合同管理與糾紛預防備考資料
- 2025標準實習生勞動合同模板
- 2025翡翠首飾買賣合同
- 臨床醫學(專科)畢業綜合考復習題
- 石家莊市存量房買賣合同
- 思想道德與法治2023版教學設計第六章 學習法治思想 提升法治素養
- 高一離子方程式書寫專題訓練及答案
- 張元鵬《微觀經濟學》(中級教程)筆記和課后習題詳解
- 如何有效管理90-00后新員工技巧方法-123課件
- 第十三講 全面貫徹落實總體國家安全觀PPT習概論2023優化版教學課件
- 人教版語文能力層級-·-教材-·-中考
- 2022年湖北省高中學業水平考試真題-音樂學科
- 浙江省公安民警心理測驗考試題目
- OEE記錄表格(設備綜合效率)
評論
0/150
提交評論