資源描述:
《C語(yǔ)言程序設(shè)計(jì)20136》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、C語(yǔ)言程序設(shè)計(jì)第六章循環(huán)控制莆田學(xué)院《C語(yǔ)言程序設(shè)計(jì)》精品課程組2005年3月制作目錄一、if…goto語(yǔ)句循環(huán)結(jié)構(gòu)二、while語(yǔ)句循環(huán)結(jié)構(gòu)三、do…while語(yǔ)句循環(huán)結(jié)構(gòu)四、for語(yǔ)句循環(huán)結(jié)構(gòu)五、其他循環(huán)控制結(jié)構(gòu)六、編程示例七、常用算法作業(yè)循環(huán)是在循環(huán)條件為真時(shí)計(jì)算機(jī)反復(fù)執(zhí)行的一組指令(循環(huán)體)。循環(huán)控制通常有兩種方式:◆計(jì)數(shù)控制事先能夠準(zhǔn)確知道循環(huán)次數(shù)時(shí)用之用專門的循環(huán)變量來(lái)計(jì)算循環(huán)的次數(shù),循環(huán)變量的值在每次執(zhí)行完循環(huán)體各語(yǔ)句后遞增,達(dá)到預(yù)定循環(huán)次數(shù)時(shí)則終止循環(huán),繼續(xù)執(zhí)行循環(huán)結(jié)構(gòu)后的語(yǔ)句?!魳?biāo)記控制事先不知道準(zhǔn)確的循環(huán)次數(shù)時(shí)用之由專門的標(biāo)記變量控制循環(huán)是否繼續(xù)進(jìn)行。當(dāng)標(biāo)記
2、變量的值達(dá)到指定的標(biāo)記值時(shí),循環(huán)終止,繼續(xù)執(zhí)行循環(huán)結(jié)構(gòu)后的語(yǔ)句。在C語(yǔ)言中可用以下語(yǔ)句構(gòu)成循環(huán):if…gotowhiledo…whilefor其中if…goto是通過(guò)編程技巧(if語(yǔ)句和goto語(yǔ)句組合)構(gòu)成循環(huán)功能。而且goto語(yǔ)句將影響程序流程的模塊化,使程序可讀性變差,所以結(jié)構(gòu)化程序設(shè)計(jì)主張限制goto語(yǔ)句的使用。其他三種語(yǔ)句是C語(yǔ)言提供的循環(huán)結(jié)構(gòu)專用語(yǔ)句。循環(huán)結(jié)構(gòu)兩大要素:循環(huán)條件p結(jié)束循環(huán)的條件表達(dá)式循環(huán)體A循環(huán)執(zhí)行的語(yǔ)句或語(yǔ)句組設(shè)置循環(huán)條件要特別注意確定:循環(huán)變量的初值循環(huán)變量的終值循環(huán)變量的變化規(guī)律名詞解釋無(wú)限循環(huán)死循環(huán)名詞解釋空循環(huán)一、if…goto語(yǔ)句循環(huán)結(jié)構(gòu)
3、P106【例一】main(){intn=0,sum=0;loop:sum+=n;++n;if(sum<=10000)gotoloop;printf(“n=%d”,n);}【例二】main(){intn=0,sum=0;loop:if(sum>=10000)gotoend;sum+=n;++n;gotoloop;end:printf(“n=%d”,n);}直到型當(dāng)型二、while語(yǔ)句循環(huán)結(jié)構(gòu)P107【例三】main(){intn=0,sum=0;while(sum<=10000){sum+=n;++n;}printf(“n=%d”,n);}當(dāng)型一般形式while(條件
4、表達(dá)式)循環(huán)體;用于構(gòu)成當(dāng)型循環(huán):先判斷后執(zhí)行/條件為真繼續(xù)循環(huán),直到條件為假時(shí)結(jié)束循環(huán)?!咀⒁狻織l件表達(dá)式或循環(huán)體內(nèi)應(yīng)有改變條件使循環(huán)結(jié)束的語(yǔ)句,否則可能陷入“死循環(huán)”。三、do…while語(yǔ)句循環(huán)結(jié)構(gòu)P108【例四】main(){intn=0,sum=0;do{sum+=n;++n;}while(sum<=10000);printf(“n=%d”,n);}一般形式do{循環(huán)語(yǔ)句(組)}while(條件表達(dá)式);用于構(gòu)成直到型循環(huán):先執(zhí)行后判斷/條件為真繼續(xù)循環(huán),直到條件為假時(shí)結(jié)束循環(huán)?!咀⒁狻織l件表達(dá)式或循環(huán)體內(nèi)同樣應(yīng)有改變條件使循環(huán)結(jié)束的語(yǔ)句,否則可能陷入“死循環(huán)”。
5、直到型直到sum超過(guò)10000為止【例五】從鍵盤輸入一個(gè)整數(shù)12456,分析以下程序運(yùn)行結(jié)果。main(){intnum,c;printf(“請(qǐng)輸入一個(gè)整數(shù):“);scanf(“%d”,&num);do{c=num%10;printf(“%d”,c);}while((num/=10)>0);printf(“”);}/*取得num的個(gè)位數(shù)*//*輸出num的個(gè)位數(shù)*//*直到num/10為0*/結(jié)果:65421將各位數(shù)字反序顯示出來(lái)四、for語(yǔ)句循環(huán)結(jié)構(gòu)P110一般形式for(表達(dá)式1;條件表達(dá)式;表達(dá)式3)循環(huán)語(yǔ)句(組);用于構(gòu)成計(jì)數(shù)型當(dāng)型循環(huán):先判斷后執(zhí)行/條件為真繼續(xù)循
6、環(huán),直到條件為假時(shí)結(jié)束循環(huán)。表達(dá)式1:整個(gè)循環(huán)中只執(zhí)行1次,常用來(lái)對(duì)循環(huán)變量設(shè)置初值條件表達(dá)式(表達(dá)式2):其值為真(非0)時(shí)繼續(xù)執(zhí)行循環(huán)語(yǔ)句(組),否則結(jié)束循環(huán)表達(dá)式3:常用于循環(huán)變量值的更新(循環(huán)體的一部分每次循環(huán)語(yǔ)句組執(zhí)行完后執(zhí)行一次)【例六】求∑i=1+2+3+4…+99+100(i=1~100)main(){inti,s=0;for(i=1;i<=100;i++)s=s+i;printf(“Sum=%d”,s);}五、其他循環(huán)控制結(jié)構(gòu)P114break結(jié)束循環(huán)在switch中退出switch結(jié)構(gòu);在循環(huán)中結(jié)束循環(huán)。continue結(jié)束本次循環(huán)循環(huán)“短路”(跳過(guò)循環(huán)
7、體后面的語(yǔ)句,開始下一輪循環(huán))。goto跳轉(zhuǎn)跳到循環(huán)體外指定標(biāo)號(hào)處?!咀⒁狻縢oto語(yǔ)句只能從循環(huán)內(nèi)向外跳轉(zhuǎn),反之不可!main(){inta,y;a=10,y=0;do{a+=2;y+=a;if(y>50)break;}while(a=14);printf("a=%d,y=%d",a,y);}結(jié)果:a=16,y=60變量跟蹤ay100121214+216+12=2814+216+28=4414+216+44=60變量跟蹤分析法break結(jié)束循環(huán)在switch中退出switch結(jié)構(gòu);在循