資源描述:
《《循環(huán)結(jié)構(gòu)程序設(shè)計(jì)》PPT課件.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.1循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.2while語句和do–while語句5.3for語句5.4循環(huán)的嵌套5.5break語句和continue語句5.6循環(huán)結(jié)構(gòu)程序設(shè)計(jì)綜合應(yīng)用本章要點(diǎn)while,for,do-while三種循環(huán)語句的使用方法break,continue兩種循環(huán)控制語句的使用方法循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的特點(diǎn)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的一般方法。5.1循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)中一種很重要的結(jié)構(gòu),又稱為重復(fù)結(jié)構(gòu)。其特點(diǎn)是,在給定條件成立時(shí),反復(fù)執(zhí)行某程序段,直到條件不成立為止。給定的條件稱為循環(huán)條件,反復(fù)
2、執(zhí)行的程序段稱為循環(huán)體。在進(jìn)行循環(huán)結(jié)構(gòu)程序設(shè)計(jì)時(shí),關(guān)鍵是要設(shè)計(jì)好循環(huán)判斷條件和循環(huán)體。循環(huán)判斷條件——判斷循環(huán)體是否需要再次執(zhí)行,什么時(shí)候結(jié)束,所以在設(shè)計(jì)循環(huán)判斷條件時(shí)一定要準(zhǔn)確。循環(huán)體——決定哪些語句應(yīng)該在循環(huán)體內(nèi),哪些語句應(yīng)該放在循環(huán)體外,判斷的標(biāo)準(zhǔn)是該語句是否需要多次執(zhí)行,不能放錯(cuò)位置。循環(huán)條件和循環(huán)體設(shè)置不好,很可能得不到預(yù)期的結(jié)果,甚至出現(xiàn)死循環(huán)。現(xiàn)在,以例4-14的生肖查詢?yōu)槔榻B循環(huán)結(jié)構(gòu)程序設(shè)計(jì)一般的設(shè)計(jì)思路。1.循環(huán)條件設(shè)計(jì)如果查詢?nèi)藬?shù)確定,可用一個(gè)變量來記錄已查詢的人數(shù),循環(huán)條件可設(shè)計(jì)為判斷計(jì)數(shù)變量是否小于指定
3、人數(shù),源程序可以參閱例5-6,如果不能確定查詢的人數(shù),則可約定一個(gè)查詢結(jié)束鍵,每次查詢完一個(gè)人后,要求用戶輸入一個(gè)是否繼續(xù)的選擇鍵,循環(huán)條件可設(shè)計(jì)為用戶是否輸入查詢結(jié)束鍵,源程序可以參閱例5-1。2.循環(huán)體設(shè)計(jì)生肖判斷的有關(guān)語句肯定應(yīng)該放在循環(huán)體中,那么,輸入出生年份語句和顯示查詢結(jié)果的語句呢?很顯然,每次查詢都要求輸入出生年份,顯示查詢結(jié)果,即需要多次執(zhí)行,所以這兩個(gè)語句應(yīng)放在循環(huán)體中。如果循環(huán)條件設(shè)計(jì)為是否輸入查詢結(jié)束鍵,那么查詢結(jié)束鍵的輸入語句也應(yīng)放在循環(huán)體中。C語言提供了3種循環(huán)語句:while語句、do-while語句和
4、for語句,可以利用它們來組成各種不同形式的循環(huán)結(jié)構(gòu)。5.2while語句和do–while語句5.2.1while語句1.while語句的一般格式while(循環(huán)條件表達(dá)式)循環(huán)體語句說明:(1)循環(huán)條件表達(dá)式,一般是關(guān)系表達(dá)式或邏輯表達(dá)式,必須用括號括起來。只要表達(dá)式的值為真(非0),則循環(huán)繼續(xù)執(zhí)行。(2)當(dāng)循環(huán)體中超過一個(gè)語句時(shí),必須用{}括起來,構(gòu)成復(fù)合語句。應(yīng)注意循環(huán)條件的選擇,避免死循環(huán)。(4)while語句先進(jìn)行條件判斷,然后決定是否執(zhí)行循環(huán)體語句,如果第一次條件為假,則循環(huán)體語句一次也不執(zhí)行。(5)循環(huán)之前要為有關(guān)
5、變量賦初值,對于循環(huán)控制變量,一般要設(shè)置滿足循環(huán)條件的初值,其他相關(guān)變量一般根據(jù)需要設(shè)置一個(gè)特殊值,如0、1、空串等。2.執(zhí)行過程先計(jì)算循環(huán)條件表達(dá)式的值,如果為真(非0)則執(zhí)行循環(huán)體語句,然后再進(jìn)行循環(huán)判斷,直到循環(huán)條件表達(dá)式的值為假(0),結(jié)束循環(huán),轉(zhuǎn)去執(zhí)行while語句后面的語句。while語句的執(zhí)行流程如圖5.1所示。圖5.1while語句的執(zhí)行流程【例5-1】輸入一個(gè)人的出生年份,顯示他的生肖,要求可連續(xù)查詢,按'Y'鍵時(shí)繼續(xù)判斷,按其他鍵結(jié)束。#includemain(){intyear,x,n;ch
6、arc='y';/*注意,賦初值時(shí)應(yīng)保證程序執(zhí)行循環(huán)體*/while(c=='y'
7、
8、c=='Y'){/*循環(huán)體開始*/scanf("%d",&year);/*輸入出生年份的語句,應(yīng)放在循環(huán)體中*/if(year>0){x=year%12;switch(x){case0:printf("猴");break;case1:printf("雞");break;case2:printf("狗");break;case3:printf("豬");break;case4:printf("鼠");break;case5:pr
9、intf("牛");break;case6:printf("虎");break;case7:printf("兔");break;case8:printf("龍");break;case9:printf("蛇");break;case10:printf("馬");break;case11:printf("羊");}}elseprintf("請輸入一個(gè)大于0的年份");/*以下3個(gè)語句也應(yīng)放在循環(huán)體內(nèi)*/printf("是否要繼續(xù)查詢?繼續(xù)查詢請按:");getchar();/*消去緩沖區(qū)中的回車
10、鍵*/scanf("%c",&c);}/*循環(huán)體結(jié)束*/}閱讀本程序時(shí),請重點(diǎn)關(guān)注與循環(huán)相關(guān)的程序語句。【例5-2】求1+2+3+4+…+99+100的值。分析:本例是一個(gè)典型的累加問題。對于簡單的累加問題應(yīng)注意以下幾點(diǎn):(1)和變量初值為0。(2