全國計算機等級考試實用應試教程二級C語言循環(huán)結(jié)構(gòu)市公開課金獎市賽課一等獎?wù)n件_第1頁
全國計算機等級考試實用應試教程二級C語言循環(huán)結(jié)構(gòu)市公開課金獎市賽課一等獎?wù)n件_第2頁
全國計算機等級考試實用應試教程二級C語言循環(huán)結(jié)構(gòu)市公開課金獎市賽課一等獎?wù)n件_第3頁
全國計算機等級考試實用應試教程二級C語言循環(huán)結(jié)構(gòu)市公開課金獎市賽課一等獎?wù)n件_第4頁
全國計算機等級考試實用應試教程二級C語言循環(huán)結(jié)構(gòu)市公開課金獎市賽課一等獎?wù)n件_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章循環(huán)結(jié)構(gòu)本章要點: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)也稱“當”循環(huán),While語句普通形式為:While(表示式)循環(huán)語句;下列是幾點闡明:1.while是C語言關(guān)鍵字。2.while后表示式,能夠是C語言中任意合法表示式,通常為關(guān)系表示式或邏輯表示式,但也能夠是其它運算表示式。當表示式值為零時,表示條件為假;非零時,表示條件為真。第2頁第2頁3.循環(huán)體能夠是一條簡樸可執(zhí)行語句,也能夠是復合語句。4.假如第一次計算時表示式值就為0,則循環(huán)語句一次也不被執(zhí)行,流程直接跳過While語句,執(zhí)行下一條語句。

※重點提醒:while型循環(huán)語句中循環(huán)體執(zhí)行次數(shù)能夠從0到無窮。若第一次計算表示式值為0,則循環(huán)體執(zhí)行0次;若表示式恒為真,則陷入死循環(huán)。第3頁第3頁5.1.2while循環(huán)執(zhí)行過程while循環(huán)執(zhí)行過程是:計算while后表示式值,當值為非零時,執(zhí)行循環(huán)體中語句;當值為零時,退出while循環(huán)。第4頁第4頁注意:進入while循環(huán)后,一定要有能使此表示式值變?yōu)?操作,不然,循環(huán)將會無限制進行下去,即進入死循環(huán)。在程序設(shè)計中,這個是不允許出現(xiàn)。比如:計算1+2+3+…+100。main(){inti,sum=0;i=1;while(i<=100){sum+=i;i++;}printf("d\n",sum);}程序運營結(jié)果為:5050第5頁第5頁(1)循環(huán)語句中“sum+=i”相稱于“sum=sum+i”,提議讀者采用前一個寫法,由于它不但比后一個寫法編碼短,并且更能表達C語言特色。(2)注意,在循環(huán)體中應有使循環(huán)趨于結(jié)束語句。比如,本例中“i++;”,每循環(huán)一次i值就增長1,當i>100時,循環(huán)條件就不滿足,循環(huán)到此結(jié)束。假如無此語句,則i值始終不變,循環(huán)永不結(jié)束,這就稱為“死循環(huán)”。在程序設(shè)計中,是不允許死循環(huán)出現(xiàn)。

※重點提醒:在循環(huán)體中應有使循環(huán)趨于結(jié)束語句。在程序設(shè)計中,是不允許死循環(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是另一個循環(huán)結(jié)構(gòu),它普通形式為:

do

循環(huán)語句;while(表示式);第7頁第7頁下列是幾點闡明:1.do是C語言關(guān)鍵字,必須和while聯(lián)合使用。2.在while(表示式)后分號“;”不可丟,它表示do-while語句結(jié)束。3.while后括號中表示式能夠是任意合法表示式,由它來控制循環(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)語句,如此重復,直到表示式值為0時才跳出循環(huán)語句,執(zhí)行下一條語句;若表示式值為0,則不再返回重新執(zhí)行循環(huán)語句,直接退出循環(huán)語句,執(zhí)行下一條語句。如圖5.1(b)所表示。

dowhile語句特點是:先執(zhí)行語句,后判斷表示式值。故doWhile語句又稱“直到型”循環(huán)結(jié)構(gòu)。由于是先執(zhí)行后判斷,因此dowhile語句循環(huán)語句至少被執(zhí)行一次。注意:while圓括號后面有一個分號“;”,書寫時不能丟。第9頁第9頁比如:用dowhile循環(huán)結(jié)構(gòu)來計算1+2+3+…+100。main(){inti,sum=0;i=1;do{sum+=i;i++;}while(i<=100);printf("d\n",sum);}程序運營結(jié)果為:5050第10頁第10頁能夠看出,此例結(jié)果與上節(jié)例程結(jié)果是完全相同,也就是說,對同一問題既能夠用while語句來處理,也可用dowhile語句來處理。在普通情況下,用while語句和dowhile語句處理同一問題時,若兩者循環(huán)體同樣,運營結(jié)果也就同樣。但當while后面表示式值一開始就為0時,兩種循環(huán)結(jié)構(gòu)結(jié)果是不相同?!攸c提醒: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)語句;下列是幾點闡明:1.表示式1普通為賦值表示式,用于進入循環(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提醒:表示式1、表示式2、表示式3都必須為for語句要求合法表示式。第13頁第13頁

for語句執(zhí)行過程是:

①先計算表示式1值。

②再計算表示式2值,若其值為真,則執(zhí)行循環(huán)體一次;不然跳轉(zhuǎn)第⑤步。

③然后計算表示式3值。

④轉(zhuǎn)回上面第②步。

⑤結(jié)束循環(huán),執(zhí)行for語句下面一個語句。5.3.2for循環(huán)執(zhí)行過程第14頁第14頁圖5.2for語句執(zhí)行流程圖※重點提醒:在整個for語句中,表示式1只計算一次,表示式2和表示式3則也許計算多次。循環(huán)體也許多次執(zhí)行,也也許一次都不執(zhí)行。第15頁第15頁5.3.3相關(guān)for語句闡明(1)for語句普通形式中“表示式1”能夠省略,即:for(;表示式2;表示式3)

循環(huán)語句;但注意省略表示式1時,其后分號不能省略。此時,應在for語句之前給循環(huán)變量賦初值。(2)假如省略表示式2,即:for(表示式1;;表示式3)循環(huán)語句;則表示表示式2值始終為真,循環(huá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)語句;此時,也將產(chǎn)生一個無窮循環(huán)。因此,程序設(shè)計者應另外設(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后面分號不能省略。(4)也能夠同時省略表示式1和表示式3,即:for(;表示式2;)循環(huán)語句;也即省略了循環(huán)初值和循環(huán)變量修改部分,此時完全等價于while語句。第17頁第17頁(5)同時省略表示式1、表示式2和表示式3,即:for(;;)循環(huán)語句;相稱于賦循環(huán)變量初值,循環(huán)控制條件始終為真,不修改循環(huán)變量,故循環(huán)將無終止地進行下去。(6)在for語句中,表示式1和表示式3不但能夠使用簡樸表示式,也能夠使用逗號表示式,即包括一個以上簡樸表示式,中間用逗號間隔。在逗號表示式內(nèi)按自左至右求解,整個表示式值為其中最右邊表示式值。比如:

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句用來實現(xiàn)延時,即在程序執(zhí)行中檔待一定期間。下列為延時程序例子:for(i=1;i<=1000;i++);注意以上語句最后分號不能省略,它代表一個空語句。比如:用for循環(huán)結(jié)構(gòu)來計算1+2+3+…+100。main(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d\n",sum);}程序運營結(jié)果為:5050第19頁第19頁能夠看出,此例結(jié)果前兩例是完全相同。顯然,用for語句簡樸、方便?!攸c提醒:for語句中表示式能夠部分或全部省略,但兩個分號不能省略,且三個表示式均省略時,循環(huán)將會無限制執(zhí)行,而形成死循環(huán)。因此,編寫程序時,在for后面一對圓括號內(nèi),應只含有能對循環(huán)進行控制表示式,其它操作盡也許放在循環(huán)體內(nèi)完成。第20頁第20頁5.4循環(huán)結(jié)構(gòu)嵌套1.循環(huán)嵌套形式在一個循環(huán)體內(nèi)又完整地包括了另一個循環(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)嵌套幾點闡明(1)三種循環(huán)語句不但各自能夠嵌套,并且還能夠互相嵌套。比如:①while與dowhile二重嵌套while(){…do{…}while;}第23頁第23頁②while與for二重嵌套while(){…for(;;){…}}③dowhile與for二重嵌套do{…for(;;){…}}while();第24頁第24頁(2)使用嵌套時,應注意一個循環(huán)結(jié)構(gòu)應完整地嵌套在另一個循環(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");}}程序運營結(jié)果為:

123456789--------------------------------------------------------------------1234567892468101214161836912151821242748121620242832365101520253035404561218243036424854714212835424956638162432404856647291827364554637281第26頁第26頁(1)第4~5行和第7~8行為兩個并列for循環(huán)結(jié)構(gòu),作用是輸出運營結(jié)果第1行和第2行。(2)第6行和第9行“printf("\n");”語句作用是輸出一行后進行換行處理。(3)第10~14行為二重嵌套for循環(huán)結(jié)構(gòu),作用是打印乘法表,其中第14行作用是每次退出內(nèi)循環(huán)之時,即每次輸出一行完畢后進行換行處理?!攸c提醒:在循環(huán)嵌套中,內(nèi)嵌第一個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語句有下列幾點闡明:(1)break語句不能用于循環(huán)語句和switch語句之外任何其它語句中。(2)break語句只能用于循環(huán)體內(nèi),不能用在循環(huán)語句上。如for(i=1;i<10;break,i++)是不正確。(3)break語句只能跳出一層循環(huán),即從當前循環(huán)層中跳出。假如要跳出多層循環(huán),可使用goto語句。第29頁第29頁比如:設(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);}程序運營結(jié)果為:313由于此題無法擬定循環(huán)條件和循環(huán)次數(shù),因此應采用無限循環(huán)配以break語句辦法?!攸c提醒:當break語句出現(xiàn)在循環(huán)體中switch語句體內(nèi)時,其作用只是跳出該switch語句體,當break語句出現(xiàn)在循環(huán)體中,但并不在switch語句體內(nèi)時,則在執(zhí)行break后,跳出本層循環(huán)。第30頁第30頁5.5.2continue語句1.continue語句普通形式continue語句作用是結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue語句之后語句,而是跳轉(zhuǎn)到循環(huán)開始處,進行下一次是否執(zhí)行循環(huán)鑒定。它普通形式為:continue;2.關(guān)于continue語句幾點闡明(1)continue語句只是結(jié)束循環(huán)結(jié)構(gòu)中本次循環(huán),并非跳出整個循環(huán)過程。詳細說:對while和do~while語句,遇continue語句后,轉(zhuǎn)向執(zhí)行while之后圓括號內(nèi)條件表示式判斷;對for語句,遇continue語句后,轉(zhuǎn)向執(zhí)行表示式3。(2)執(zhí)行continue語句并沒有使整個循環(huán)終止。(3)continue語句與break語句有本質(zhì)區(qū)別:continue語句只是結(jié)束本次循環(huán),而不終止整個循環(huán)執(zhí)行;而break語句作用則是強制終止整個循環(huán)過程。第31頁

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論