




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5章循環(huán)結(jié)構(gòu)本章要點(diǎn):5.1while語句和用while語句構(gòu)成循環(huán)結(jié)構(gòu)5.2do-while語句和用do-while語句構(gòu)成循環(huán)結(jié)構(gòu)5.3for語句和用for語句構(gòu)成循環(huán)結(jié)構(gòu)5.4循環(huán)結(jié)構(gòu)嵌套5.5break和continue語句在循環(huán)體中作用5.6程序舉例第1頁第1頁5.1.1while循環(huán)普通形式由while語句構(gòu)成循環(huán)也稱“當(dāng)”循環(huán),While語句普通形式為:While(表示式)循環(huán)語句;下列是幾點(diǎn)闡明:1.while是C語言關(guān)鍵字。2.while后表示式,能夠是C語言中任意合法表示式,通常為關(guān)系表示式或邏輯表示式,但也能夠是其它運(yùn)算表示式。當(dāng)表示式值為零時(shí),表示條件為假;非零時(shí),表示條件為真。第2頁第2頁3.循環(huán)體能夠是一條簡樸可執(zhí)行語句,也能夠是復(fù)合語句。4.假如第一次計(jì)算時(shí)表示式值就為0,則循環(huán)語句一次也不被執(zhí)行,流程直接跳過While語句,執(zhí)行下一條語句。
※重點(diǎn)提醒:while型循環(huán)語句中循環(huán)體執(zhí)行次數(shù)能夠從0到無窮。若第一次計(jì)算表示式值為0,則循環(huán)體執(zhí)行0次;若表示式恒為真,則陷入死循環(huán)。第3頁第3頁5.1.2while循環(huán)執(zhí)行過程while循環(huán)執(zhí)行過程是:計(jì)算while后表示式值,當(dāng)值為非零時(shí),執(zhí)行循環(huán)體中語句;當(dāng)值為零時(shí),退出while循環(huán)。第4頁第4頁注意:進(jìn)入while循環(huán)后,一定要有能使此表示式值變?yōu)?操作,不然,循環(huán)將會(huì)無限制進(jìn)行下去,即進(jìn)入死循環(huán)。在程序設(shè)計(jì)中,這個(gè)是不允許出現(xiàn)。比如:計(jì)算1+2+3+…+100。main(){inti,sum=0;i=1;while(i<=100){sum+=i;i++;}printf("d\n",sum);}程序運(yùn)營結(jié)果為:5050第5頁第5頁(1)循環(huán)語句中“sum+=i”相稱于“sum=sum+i”,提議讀者采用前一個(gè)寫法,由于它不但比后一個(gè)寫法編碼短,并且更能表達(dá)C語言特色。(2)注意,在循環(huán)體中應(yīng)有使循環(huán)趨于結(jié)束語句。比如,本例中“i++;”,每循環(huán)一次i值就增長1,當(dāng)i>100時(shí),循環(huán)條件就不滿足,循環(huán)到此結(jié)束。假如無此語句,則i值始終不變,循環(huán)永不結(jié)束,這就稱為“死循環(huán)”。在程序設(shè)計(jì)中,是不允許死循環(huán)出現(xiàn)。
※重點(diǎn)提醒:在循環(huán)體中應(yīng)有使循環(huán)趨于結(jié)束語句。在程序設(shè)計(jì)中,是不允許死循環(huán)出現(xiàn)。第6頁第6頁5.2do-while語句和用do-while語句構(gòu)成循環(huán)結(jié)構(gòu)5.2.1do-while語句構(gòu)成循環(huán)結(jié)構(gòu)
do-while是另一個(gè)循環(huán)結(jié)構(gòu),它普通形式為:
do
循環(huán)語句;while(表示式);第7頁第7頁下列是幾點(diǎn)闡明:1.do是C語言關(guān)鍵字,必須和while聯(lián)合使用。2.在while(表示式)后分號(hào)“;”不可丟,它表示do-while語句結(jié)束。3.while后括號(hào)中表示式能夠是任意合法表示式,由它來控制循環(huán)是否執(zhí)行。4.do-while之間循環(huán)體能夠是一條可執(zhí)行語句也能夠是由“{}”構(gòu)成符合語句。第8頁第8頁5.2.2do-while循環(huán)執(zhí)行過程
do-while語句執(zhí)行過程是:先執(zhí)行一次指定循環(huán)語句,然后判斷表示式值,若表示式值為非0,再返回重新執(zhí)行循環(huán)語句,如此重復(fù),直到表示式值為0時(shí)才跳出循環(huán)語句,執(zhí)行下一條語句;若表示式值為0,則不再返回重新執(zhí)行循環(huán)語句,直接退出循環(huán)語句,執(zhí)行下一條語句。如圖5.1(b)所表示。
dowhile語句特點(diǎn)是:先執(zhí)行語句,后判斷表示式值。故doWhile語句又稱“直到型”循環(huán)結(jié)構(gòu)。由于是先執(zhí)行后判斷,因此dowhile語句循環(huán)語句至少被執(zhí)行一次。注意:while圓括號(hào)后面有一個(gè)分號(hào)“;”,書寫時(shí)不能丟。第9頁第9頁比如:用dowhile循環(huán)結(jié)構(gòu)來計(jì)算1+2+3+…+100。main(){inti,sum=0;i=1;do{sum+=i;i++;}while(i<=100);printf("d\n",sum);}程序運(yùn)營結(jié)果為:5050第10頁第10頁能夠看出,此例結(jié)果與上節(jié)例程結(jié)果是完全相同,也就是說,對同一問題既能夠用while語句來處理,也可用dowhile語句來處理。在普通情況下,用while語句和dowhile語句處理同一問題時(shí),若兩者循環(huán)體同樣,運(yùn)營結(jié)果也就同樣。但當(dāng)while后面表示式值一開始就為0時(shí),兩種循環(huán)結(jié)構(gòu)結(jié)果是不相同?!攸c(diǎn)提醒:do-while語句先執(zhí)行語句,后判斷表示式值。故do-while語句又稱“直到型”循環(huán)結(jié)構(gòu)。由于是先執(zhí)行后判斷,因此do-while語句循環(huán)語句至少被執(zhí)行一次。第11頁第11頁5.3for語句和用for語句構(gòu)成循環(huán)結(jié)構(gòu)5.3.1for語句構(gòu)成循環(huán)結(jié)構(gòu)for語句普通形式為:for(表示式1;表示式2;表示式3)循環(huán)語句;下列是幾點(diǎn)闡明:1.表示式1普通為賦值表示式,用于進(jìn)入循環(huán)之前給循環(huán)變量賦初值。2.表示式2普通為關(guān)系表示式或邏輯表示式,用于執(zhí)行循環(huán)條件鑒定,它與while、dowhile循環(huán)中表示式作用完全相同。3.表示式3普通為賦值表示式或自增、自減表示式,用于修改循環(huán)變量值。第12頁第12頁for循環(huán)結(jié)構(gòu)是幾乎所有高級語言都提供循環(huán)控制結(jié)構(gòu)。但C語言中for語句使用最為靈活,它不但能夠用于循環(huán)次數(shù)已經(jīng)擬定情況,并且能夠用于循環(huán)次數(shù)不擬定而只給出循環(huán)結(jié)束條件情況,因而它完全能夠代替while語句和dowhile語句?!攸c(diǎn)提醒:表示式1、表示式2、表示式3都必須為for語句要求合法表示式。第13頁第13頁
for語句執(zhí)行過程是:
①先計(jì)算表示式1值。
②再計(jì)算表示式2值,若其值為真,則執(zhí)行循環(huán)體一次;不然跳轉(zhuǎn)第⑤步。
③然后計(jì)算表示式3值。
④轉(zhuǎn)回上面第②步。
⑤結(jié)束循環(huán),執(zhí)行for語句下面一個(gè)語句。5.3.2for循環(huán)執(zhí)行過程第14頁第14頁圖5.2for語句執(zhí)行流程圖※重點(diǎn)提醒:在整個(gè)for語句中,表示式1只計(jì)算一次,表示式2和表示式3則也許計(jì)算多次。循環(huán)體也許多次執(zhí)行,也也許一次都不執(zhí)行。第15頁第15頁5.3.3相關(guān)for語句闡明(1)for語句普通形式中“表示式1”能夠省略,即:for(;表示式2;表示式3)
循環(huán)語句;但注意省略表示式1時(shí),其后分號(hào)不能省略。此時(shí),應(yīng)在for語句之前給循環(huán)變量賦初值。(2)假如省略表示式2,即:for(表示式1;;表示式3)循環(huán)語句;則表示表示式2值始終為真,循環(huán)將無終止地進(jìn)行下去。比如:for(i=1;;i++)printf("%d",i);將無限循環(huán)輸出1,2,3,4,5,6,……第16頁第16頁(3)假如省略表示式3,即:for(表示式1;表示式2;)循環(huán)語句;此時(shí),也將產(chǎn)生一個(gè)無窮循環(huán)。因此,程序設(shè)計(jì)者應(yīng)另外設(shè)法確保循環(huán)能正常結(jié)束,能夠?qū)⒀h(huán)變量修改部分(即表示式3)放在循環(huán)語句中控制。比如:for(i=1;i<=100;){sum+=i;i++;}上述for語句中沒有表示式3,而是將表示式3(i++)放在循環(huán)語句中,作用相同,都能使用循環(huán)正常結(jié)束。注意表示式2后面分號(hào)不能省略。(4)也能夠同時(shí)省略表示式1和表示式3,即:for(;表示式2;)循環(huán)語句;也即省略了循環(huán)初值和循環(huán)變量修改部分,此時(shí)完全等價(jià)于while語句。第17頁第17頁(5)同時(shí)省略表示式1、表示式2和表示式3,即:for(;;)循環(huán)語句;相稱于賦循環(huán)變量初值,循環(huán)控制條件始終為真,不修改循環(huán)變量,故循環(huán)將無終止地進(jìn)行下去。(6)在for語句中,表示式1和表示式3不但能夠使用簡樸表示式,也能夠使用逗號(hào)表示式,即包括一個(gè)以上簡樸表示式,中間用逗號(hào)間隔。在逗號(hào)表示式內(nèi)按自左至右求解,整個(gè)表示式值為其中最右邊表示式值。比如:
for(i=1;i<=100;i++,sum=sum+i)
相稱于
for(i=1;i<=100;i++)
sum=sum+i;(7)在for語句中,表示式普通為關(guān)系表示式或邏輯表示式,但也能夠是其它表示式(如字符表示式、數(shù)值表示式)。第18頁第18頁(8)for語句循環(huán)語句能夠是空語句??照Z句用來實(shí)現(xiàn)延時(shí),即在程序執(zhí)行中檔待一定期間。下列為延時(shí)程序例子:for(i=1;i<=1000;i++);注意以上語句最后分號(hào)不能省略,它代表一個(gè)空語句。比如:用for循環(huán)結(jié)構(gòu)來計(jì)算1+2+3+…+100。main(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d\n",sum);}程序運(yùn)營結(jié)果為:5050第19頁第19頁能夠看出,此例結(jié)果前兩例是完全相同。顯然,用for語句簡樸、方便。※重點(diǎn)提醒:for語句中表示式能夠部分或全部省略,但兩個(gè)分號(hào)不能省略,且三個(gè)表示式均省略時(shí),循環(huán)將會(huì)無限制執(zhí)行,而形成死循環(huán)。因此,編寫程序時(shí),在for后面一對圓括號(hào)內(nèi),應(yīng)只含有能對循環(huán)進(jìn)行控制表示式,其它操作盡也許放在循環(huán)體內(nèi)完成。第20頁第20頁5.4循環(huán)結(jié)構(gòu)嵌套1.循環(huán)嵌套形式在一個(gè)循環(huán)體內(nèi)又完整地包括了另一個(gè)循環(huán),稱為循環(huán)嵌套。循環(huán)嵌套能夠是多層,但每一層循環(huán)在邏輯上必須是完整。比如下列幾種形式二重嵌套。①while與while二重嵌套第21頁第21頁while(){…while(){…}}②dowhile與dowhile二重嵌套do{…do{…}while();
}while();③for與for二重嵌套for(;;){…for(;;){…}
}①while與while二重嵌套第22頁第22頁2.關(guān)于循環(huán)嵌套幾點(diǎn)闡明(1)三種循環(huán)語句不但各自能夠嵌套,并且還能夠互相嵌套。比如:①while與dowhile二重嵌套while(){…do{…}while;}第23頁第23頁②while與for二重嵌套while(){…for(;;){…}}③dowhile與for二重嵌套do{…for(;;){…}}while();第24頁第24頁(2)使用嵌套時(shí),應(yīng)注意一個(gè)循環(huán)結(jié)構(gòu)應(yīng)完整地嵌套在另一個(gè)循環(huán)體內(nèi),不允許循環(huán)體間交叉。比如下列循環(huán)結(jié)構(gòu)是不正確:while(){…do{…}}while();(3)除了上述二重嵌套外,還能夠有三重嵌套、四重嵌套等多層嵌套。(4)嵌套外循環(huán)和內(nèi)循環(huán)循環(huán)控制變量不得同名,但并列內(nèi)、外循環(huán)允許有同名循環(huán)控制變量。比如下列為合法循環(huán)結(jié)構(gòu):for(j=1;j<=10;j++){…for(i=1;i<=10;i++){…}
for(i=1;i<=10;i++){…}
…}第25頁第25頁3.循環(huán)嵌套程序舉例利用雙層for循環(huán)結(jié)構(gòu)打印出9×9乘法表。main(){inti,j;for(i=1;i<10;i++)printf("%5d",i);printf("\n");for(i=1;i<=46;i++)printf("-");printf("\n");for(i=1;i<10;i++){for(j=1;j<=9;j++)printf("%5d",i*j);printf("\n");}}程序運(yùn)營結(jié)果為:
123456789--------------------------------------------------------------------1234567892468101214161836912151821242748121620242832365101520253035404561218243036424854714212835424956638162432404856647291827364554637281第26頁第26頁(1)第4~5行和第7~8行為兩個(gè)并列for循環(huán)結(jié)構(gòu),作用是輸出運(yùn)營結(jié)果第1行和第2行。(2)第6行和第9行“printf("\n");”語句作用是輸出一行后進(jìn)行換行處理。(3)第10~14行為二重嵌套for循環(huán)結(jié)構(gòu),作用是打印乘法表,其中第14行作用是每次退出內(nèi)循環(huán)之時(shí),即每次輸出一行完畢后進(jìn)行換行處理?!攸c(diǎn)提醒:在循環(huán)嵌套中,內(nèi)嵌第一個(gè)for循環(huán)結(jié)束條件和外循環(huán)控制變量是相關(guān),而最里面for循環(huán)循環(huán)結(jié)束條件是固定不變。第27頁第27頁5.5break和continue語句在循環(huán)體中作用5.5.1break語句在第四章中我們簡介過,使用break語句能夠使流程跳出switch語句體,在循環(huán)結(jié)構(gòu)中,也能夠使用break語句使流程跳出本層循環(huán)體,從而提前結(jié)束本層循環(huán)。
break語句普通形式為:
break;第28頁第28頁關(guān)于break語句有下列幾點(diǎn)闡明:(1)break語句不能用于循環(huán)語句和switch語句之外任何其它語句中。(2)break語句只能用于循環(huán)體內(nèi),不能用在循環(huán)語句上。如for(i=1;i<10;break,i++)是不正確。(3)break語句只能跳出一層循環(huán),即從當(dāng)前循環(huán)層中跳出。假如要跳出多層循環(huán),可使用goto語句。第29頁第29頁比如:設(shè)計(jì)一個(gè)程序,求能同時(shí)滿足除以3余1、除以5余3、除以7余5、除以9余7最小正整數(shù)。main(){inti;for(i=1;;i++)if(i%3==1&&i%5==3&&i%7==5&&i%9==7)break;printf("%d\n",i);}程序運(yùn)營結(jié)果為:313由于此題無法擬定循環(huán)條件和循環(huán)次數(shù),因此應(yīng)采用無限循環(huán)配以break語句辦法。※重點(diǎn)提醒:當(dāng)break語句出現(xiàn)在循環(huán)體中switch語句體內(nèi)時(shí),其作用只是跳出該switch語句體,當(dāng)break語句出現(xiàn)在循環(huán)體中,但并不在switch語句體內(nèi)時(shí),則在執(zhí)行break后,跳出本層循環(huán)。第30頁第30頁5.5.2continue語句1.continue語句普通形式continue語句作用是結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue語句之后語句,而是跳轉(zhuǎn)到循環(huán)開始處,進(jìn)行下一次是否執(zhí)行循環(huán)鑒定。它普通形式為:continue;2.關(guān)于continue語句幾點(diǎn)闡明(1)continue語句只是結(jié)束循環(huán)結(jié)構(gòu)中本次循環(huán),并非跳出整個(gè)循環(huán)過程。詳細(xì)說:對while和do~while語句,遇continue語句后,轉(zhuǎn)向執(zhí)行while之后圓括號(hào)內(nèi)條件表示式判斷;對for語句,遇continue語句后,轉(zhuǎn)向執(zhí)行表示式3。(2)執(zhí)行continue語句并沒有使整個(gè)循環(huán)終止。(3)continue語句與break語句有本質(zhì)區(qū)別:continue語句只是結(jié)束本次循環(huán),而不終止整個(gè)循環(huán)執(zhí)行;而break語句作用則是強(qiáng)制終止整個(gè)循環(huán)過程。第31頁
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廣東省外語藝術(shù)職業(yè)學(xué)院單招職業(yè)技能測試題庫完整
- Module 3 Unit 3 教學(xué)設(shè)計(jì)2024-2025學(xué)年外研版英語八年級上冊
- 2025年貴州工貿(mào)職業(yè)學(xué)院單招職業(yè)傾向性測試題庫附答案
- 2025年邯鄲應(yīng)用技術(shù)職業(yè)學(xué)院單招職業(yè)技能測試題庫新版
- 算力硬件市場現(xiàn)狀與發(fā)展趨勢
- 供水設(shè)施智能化改造的技術(shù)要求
- 第13課《紀(jì)念白求恩》教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版語文七年級上冊
- 產(chǎn)業(yè)數(shù)字化科技創(chuàng)新園市場分析與需求評估
- 2025年度酒水專賣店加盟連鎖經(jīng)營合同
- 2025年度餐飲業(yè)股權(quán)入股合作協(xié)議
- 舞臺(tái)設(shè)計(jì)課件
- 高中勞動(dòng)教育課教案8篇
- 急性髓性白血病教學(xué)查房課件
- 高中英語 高中閱讀高頻單詞
- 初一年級班級日志記載表(詳)
- 《胃癌課件:病理和分子機(jī)制解析》
- 生產(chǎn)制造企業(yè)流程匯編
- 國際貿(mào)易實(shí)務(wù)課程教案
- 部編版六年級語文下冊全冊課件PPT
- 人教版三年級數(shù)學(xué)下冊 (認(rèn)識(shí)東北、西北、東南、西南)位置與方向課件
- 與食品經(jīng)營相適應(yīng)的主要設(shè)備設(shè)施布局、操作流程等文件
評論
0/150
提交評論