第6章循環(huán)結(jié)構(gòu)設(shè)計(jì)--C語言程序設(shè)計(jì)(譚浩強(qiáng)第三版)講解_第1頁
第6章循環(huán)結(jié)構(gòu)設(shè)計(jì)--C語言程序設(shè)計(jì)(譚浩強(qiáng)第三版)講解_第2頁
第6章循環(huán)結(jié)構(gòu)設(shè)計(jì)--C語言程序設(shè)計(jì)(譚浩強(qiáng)第三版)講解_第3頁
第6章循環(huán)結(jié)構(gòu)設(shè)計(jì)--C語言程序設(shè)計(jì)(譚浩強(qiáng)第三版)講解_第4頁
第6章循環(huán)結(jié)構(gòu)設(shè)計(jì)--C語言程序設(shè)計(jì)(譚浩強(qiáng)第三版)講解_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第6章循環(huán)結(jié)構(gòu)編程中,概述了goto語句和由goto語句構(gòu)成循環(huán)的3種循環(huán)while、do-while、for循環(huán)的嵌套的幾個(gè)循環(huán)的比較Break語句和continue語句程序示例,6.0循環(huán)結(jié)構(gòu)的導(dǎo)入是循環(huán)中的組合圖層性質(zhì)變更選項(xiàng)。 這些問題可以引出概念“循環(huán)”。 簡單來說,循環(huán)是指重復(fù)執(zhí)行同一程序。6.1概要、c語言可實(shí)現(xiàn)的循環(huán):循環(huán)while語句do while語句for語句由goto和if構(gòu)成,從模型循環(huán)先判斷后執(zhí)行,從模型循環(huán)先執(zhí)行到判斷,由多功能、6.2 goto語句和goto語句構(gòu)成循環(huán),一般形式:語句、1 2 .用途:從與if文一起構(gòu)成環(huán)結(jié)構(gòu)的循環(huán)體飛出循環(huán)體外。 濫用goto

2、語句會(huì)破壞結(jié)構(gòu)化,進(jìn)程會(huì)變得不規(guī)則,所以應(yīng)該限制使用。 除非是不得已(例如,可以大幅提高效率),否則使用。 說明:語句標(biāo)簽:1.用于定義程序內(nèi)的位置。 2 .用標(biāo)識(shí)符表示,開頭不能是數(shù)字。 例如: goto 3t; 錯(cuò)誤goto t3; 正確的3 .只能在可執(zhí)行語句之前添加。 由if語句和goto語句構(gòu)成循環(huán),例1修正運(yùn)算、#include main() int i、sum=0; i=1; 環(huán)形3360 if (I=100 )和=I。 I; 轉(zhuǎn)環(huán); 打印(% d,和); sum=sum1=1sum=sum2=3sum3=6sum=sum4=10 s um=sum 100=5050,分析:單擊這

3、是一個(gè)累加問題sum=,然后使用while語句實(shí)現(xiàn)該類型的循環(huán),并將表達(dá)式的值設(shè)置為真(除0以外) 用6.3while語句實(shí)現(xiàn)循環(huán),一般形式:while (式)循環(huán)體語句,執(zhí)行過程:特征:先判斷式后執(zhí)行循環(huán)體。 注意:循環(huán)體可能一次也不執(zhí)行。 循環(huán)之前,必須為循環(huán)控制變量指定初始值。 如果循環(huán)主體包含多個(gè)語句,則必須將其顯示為復(fù)合語句。 回圈主體需要變更回圈控制變數(shù)值的敘述句(使回圈朝向結(jié)束的敘述句,否則為死回圈)。 無限循環(huán): while(1)循環(huán)體循環(huán)控制條件多樣化while (i=100) while(getchar ()!=n) n; 循環(huán)體可以是空的: while(c=getchar

4、 () ) )!=A ); c=getchar (),直到從鍵盤輸入字符并輸入a為止; 威爾! c=getchar (); 一般形式:while (式)循環(huán)體句、循環(huán)控制式、解析:累加的問題s=1 2 3 100、s=0 s=s 1 s=s 2 s=s 3、和的新值、s s=0; k=1; 威爾(k=100 ) s=sk。 k; printf(“s=%d,s”),注意: s,k的初始值和位置在do-while語句中實(shí)現(xiàn)到類型循環(huán),執(zhí)行整個(gè)循環(huán),如果表達(dá)式的值為真(非0 ),則再次執(zhí)行整個(gè)循環(huán)如果表達(dá)式為假(0),則退出循環(huán)。 6.4 do-while語句,常規(guī)格式:do循環(huán)語句while (表

5、達(dá)式); 執(zhí)行過程:先執(zhí)行循環(huán)體,然后再判斷公式。 循環(huán)體至少執(zhí)行一次。 do-while語句可以轉(zhuǎn)換為while語句。 不能省略! 別忘了! 不要! 例如,用do-while語句進(jìn)行修正,#include main() int k,s; s=0; k=1; 威爾(k=100 ) s=sk。 k; printf(“s=%d,s”)、#包括主機(jī)() int k,s; s=0; k=1; do s=s k; k; while(k=100 ); printf(“s=%d,s”),先判斷,然后再判斷,運(yùn)行結(jié)果:1 sum=55再運(yùn)行: 11 sum=0,運(yùn)行結(jié)果:1 sum=55再運(yùn)行: 11 sum

6、=11,使用while語句和do-whiile語句但是,如果while后面的表達(dá)式從頭開始為假(0值),則兩個(gè)循環(huán)的結(jié)果不同。 教材117例6.4,6.5 for語句,最簡單的應(yīng)用形式:for (循環(huán)變量的初始值循環(huán)條件循環(huán)變量的增值環(huán)體語句。 例如: for(i=1; i=100; 和=I; 一般形式:for (式1; 式2; 如果省略了表達(dá)式3循環(huán)主體語句、1 .表達(dá)式1,請(qǐng)?jiān)趂or之前為循環(huán)變量指定初始值。 例如: i=1; 福爾(; i=100; 一)和=和; 在運(yùn)行時(shí),跳過“求解表達(dá)式1”步驟,其他步驟保持不變。 2 .在式2被省略的情況下,不判斷循環(huán)條件,成為“死循環(huán)”,需要在整個(gè)

7、循環(huán)中導(dǎo)入break語句來結(jié)束循環(huán)。 例如: for(i=1; 一)和=和; 這相當(dāng)于I=1;while (1)和=和1; I; 如果省略了死循環(huán)3 .表達(dá)式3,則需要在循環(huán)中更改循環(huán)條件以使循環(huán)成功結(jié)束。 例如: for(k=1; k=3; s=s k; k; for循環(huán)的說明:for循環(huán)的說明:5. 3式可以省略。 例如: for (; 句子無限循環(huán)不設(shè)定初始值,不判斷條件,循環(huán)變量沒有附加值。 不結(jié)束地執(zhí)行循環(huán)體。 6 .式2通常是關(guān)系式或邏輯式,但也可以是只要值不等于0,就執(zhí)行整個(gè)循環(huán)的數(shù)值式或字符式。 例如: for(k=1; k-4反應(yīng)堆; k )s=s k; 僅在k的值為4時(shí)退出

8、循環(huán)。 k-4是數(shù)值表達(dá)式。 例如#include main() char c; 福爾(; (c=getchar () )!=n; 打印機(jī)(% c,c ); for語句只有公式2,沒有公式1和公式3。 它的作用是每次讀入字符時(shí)輸出該字符,直到輸入換行符為止。 運(yùn)行狀況:計(jì)算機(jī)(輸入)計(jì)算機(jī)(輸出),例如#include main() int i、c; for(i=0; (c=getchar () )!=n; i=c ); 該for句的環(huán)體是空的句子,將本來應(yīng)該在環(huán)體內(nèi)處理的內(nèi)容放入式3。 在式2中,首先從終端向c接受1字符的分配,接著判斷c的值是否不等于換行n,在不等于n的情況下執(zhí)行整個(gè)循環(huán)。

9、 例如,用for語句進(jìn)行修正,#include main() int k,s; s=0; k=1; 威爾(k=100 ) s=sk。 k; printf(“s=%d,s”)、#包括主機(jī)() int k,s; s=0; k=1; do s=s k; k; while(k=100 ); printf(“s=%d,s”),先進(jìn)行判斷,然后再進(jìn)行判斷,#include main() int k,s; s=0; for(k=1; k=100; k ) s=s k; printf(“s=%d,s”)、6.6個(gè)周期的比較并不倡導(dǎo)以goto配置周期。 2 .關(guān)于循環(huán)控制:如果循環(huán)控制條件不為零,則執(zhí)行循環(huán)主體

10、語句,否則退出循環(huán)。 3 .一個(gè)周期可以解決的問題,可以使用其他兩個(gè),但便利性不同。 4. while循環(huán)一般使用在不確定循環(huán)次數(shù)的情況下,for循環(huán)一般使用在不確定循環(huán)次數(shù)的情況下(也使用在未確定循環(huán)次數(shù)的情況下),一般需要執(zhí)行至少一次do-while循環(huán)的情況下。 5.for-while循環(huán)和while循環(huán)在執(zhí)行整個(gè)循環(huán)之前,可能一次也不執(zhí)行,因?yàn)閐o-while循環(huán)會(huì)先執(zhí)行整個(gè)循環(huán),并且至少執(zhí)行一次整個(gè)循環(huán),以確定條件是否為真。 6. while循環(huán)、do-while循環(huán)和for循環(huán)可以使用break語句跳出循環(huán),使用continue語句退出此循環(huán)。 2 .環(huán)體句可以是任何句子,可以是簡

11、單句、復(fù)合句、空句。 6.7回路嵌套,回路嵌套是什么? 中的組合圖層性質(zhì)變更選項(xiàng)。 一個(gè)回圈的回圈主體包含另一個(gè)回圈,稱為回圈巢狀。 這種嵌套過程總是可以重復(fù)的。 中的組合圖層性質(zhì)變更選項(xiàng)。 在一個(gè)循環(huán)外圍一個(gè)循環(huán)稱為雙循環(huán)。 一個(gè)循環(huán)外圍的兩層循環(huán)稱為三重循環(huán)。 在一個(gè)環(huán)之外包圍多個(gè)環(huán)稱為多重環(huán)。 while、do-while、for可以相互嵌套自由組合。 1 .一個(gè)循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為嵌套循環(huán)。 2 .可以將循環(huán)嵌入嵌入的循環(huán)中以配置多重循環(huán)。 3 .三個(gè)環(huán)可以相互嵌套。下面的一些是合法的嵌套形式: (1) while () while ().(4) while () d

12、o while (); 四、五。 (三)四(四)五(五)六(六)六; 一,六,六。 while (); (2)轉(zhuǎn)移。 while (); 中的組合圖層性質(zhì)變更選項(xiàng)。 /在畫面上打印8行7列的星形矩陣。#包括主() inti; for(i=0; i7; I )打印(* ); 打印第一行星號(hào)*/printf(n ); for(i=0; i7; I )打印(* ); 列印第二行星號(hào)碼*/printf(n ); for(i=0; i7; I )打印(“*”); /*打印第8行星號(hào)*/例:雙重循環(huán)實(shí)現(xiàn)上例(打印8行7列星號(hào)矩形)。#包括主() int I、k; for(i=0; i8; 一)四(k=0;

13、 k7; k )打印機(jī)(* ); printf(n ); 6.8 break語句和continue語句、break語句: break; 功能:從switch結(jié)構(gòu)跳出的循環(huán)語句中,結(jié)束該級(jí)別的循環(huán)跳出。 例如,修正從r=1到r=10的圓面積,在面積大于100之前停止。#定義pi3. 1415主() intr; 浮動(dòng)區(qū)域; for(r=1; r 100 )中斷; 打印機(jī)(r=% d、區(qū)域=%.2 fn、r、區(qū)域); 運(yùn)行結(jié)果: r=1、area=3.14 r=2、area=12.57 r=3、area=28.27 r=4、area=50.26 r=5、area (2) break語句在循環(huán)中使用時(shí)

14、,始終與if一起使用,并滿足條件(3)在循環(huán)主體中使用switch語句,break顯示在switch語句中時(shí),只需退出switch而不影響循環(huán)。 (4)break只能結(jié)束包含它的本地層結(jié)構(gòu)并跳出,不能跳出多重循環(huán)。 例:一旦輸入了字母,就直接修改輸出程序,直到輸入完成下一個(gè)功能的q鍵結(jié)束為止,即使輸入其他字符也會(huì)忽略。#“包括”stdio.h“主() char ch; while(1) ch=getchar (); 中斷(ch=q| ch=q )。 else if(ch=A,6.8 break語句和continue語句,continue語句: continue; 功能:結(jié)束本次循環(huán),跳過本層循

15、環(huán)體中尚未執(zhí)行的語句,接著判斷是否執(zhí)行循環(huán)體。 說明: continue僅用于循環(huán)語句。 總是與if一起使用,并且輸出例如不能被100200除盡的整數(shù)。 main() int n; for(n=100; n=200; n ) if (n %3=0)連續(xù)性。 打印機(jī)(“% d,n”; 結(jié)束本次循環(huán)后,循環(huán)體的剩馀佗文被忽略,執(zhí)行式3,進(jìn)入下一個(gè)循環(huán)。 continue始終創(chuàng)建if的嵌入語句。 這個(gè)方法是if (n %3)打印機(jī)(“% d”,n ); main() int n; for(n=100; n=200; 中斷(n %3=0)。 打印機(jī)(“% d,n”; 說明: continue語句僅結(jié)束本次循環(huán)break語句結(jié)束本地級(jí)循環(huán)的執(zhí)行要考慮使用goto語句從許多重復(fù)循環(huán)的內(nèi)層跳到最外層,但盡量不要使用。 指示:for () for () if () goto結(jié)束。 結(jié)束:打印(錯(cuò)誤);continue語句和break語句goto的區(qū)別、break;連續(xù);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論