循環(huán)結(jié)構(gòu)可以看成是一個(gè)條件判斷語(yǔ)句和一個(gè)向回轉(zhuǎn)向語(yǔ)句的組合。
另外,循環(huán)結(jié)構(gòu)的三個(gè)要素:循環(huán)變量、循環(huán)體和循環(huán)終止條件,循環(huán)結(jié)構(gòu)在程序框圖中是利用判斷框來(lái)表示,判斷框內(nèi)寫上條件,兩個(gè)出口分別對(duì)應(yīng)著條件成立和條件不成立時(shí)所執(zhí)行的不同指令,其中一個(gè)要指向循環(huán)體,然后再?gòu)难h(huán)體回到判斷框的入口處.
1、while循環(huán)
while 循先判斷表達(dá)式,后執(zhí)行循環(huán)體。滿足條件時(shí)進(jìn)入循環(huán),進(jìn)入循環(huán)后,當(dāng)條件不滿足時(shí),跳出循環(huán)。while語(yǔ)句的一般表達(dá)式為:while(表達(dá)式){循環(huán)體}。
2、do-while循環(huán)
do...while 循環(huán)是 while 循環(huán)的變體。在檢查while()條件是否為真之前,該循環(huán)首先會(huì)執(zhí)行一次do{}之內(nèi)的語(yǔ)句,然后在while()內(nèi)檢查條件是否為真,如果條件為真的話,就會(huì)重復(fù)do...while這個(gè)循環(huán),直至while()為假。
兩個(gè)循環(huán)不同之處:while循環(huán)是先判斷滿足后執(zhí)行,do-while是先執(zhí)行一次后在判斷
綜合例子:水仙花數(shù)
#includeint main(void) {// n=3 153 1^3 5^3 3^3 int n; scanf("%d", &n); int number=1; int t = 1; int i; while (t < n) { number *= 10; t++; } i = number; while (number < i * 10) {//遍歷100-1000的數(shù)字 int j = number; int sum = 0; do { int d = j % 10; j /= 10; int b = 1; int c = 0; while (c < t){ b *= d; c++; } sum += b; } while (j > 0); if (number == sum) { printf("%d ", sum); } number++; } return 0; }
3、for循環(huán)
for(初始化動(dòng)作;條件;每輪做的動(dòng)作){ (循環(huán)體) }
其中 的每一個(gè)表達(dá)式都是可以省略的,但分號(hào)不可省略,因?yàn)椤?”可以代表一個(gè)空語(yǔ)句,省略了之后語(yǔ)句減少,即為語(yǔ)句格式發(fā)生變化,則編譯器不能識(shí)別而無(wú)法進(jìn)行編譯。
例子:白雞百錢
#includeint main(void) { int x, y, z; int sum = 0; for (x = 0; x < 20; x++) { for (y = 0; y < 33; y++) { z = 100 - x - y; if ((x * 5 + y * 3 + z / 3.0) == 100 && x > 0 && y > 0 && z > 0) { printf("%d %d %d ", x, y, z); } } } return 0; } //結(jié)果: //4 18 78 //8 11 81 //12 4 84
4、 goto 循環(huán)
goto語(yǔ)句也稱為無(wú)條件轉(zhuǎn)移語(yǔ)句,其一般格式如下: goto 語(yǔ)句標(biāo)號(hào); 其中語(yǔ)句標(biāo)號(hào)是按標(biāo)識(shí)符規(guī)定書寫的符號(hào), 放在某一語(yǔ)句行的前面,標(biāo)號(hào)后加冒號(hào)(:)。語(yǔ)句標(biāo)號(hào)起標(biāo)識(shí)語(yǔ)句的作用,與goto 語(yǔ)句配合使用。如: goto out; out:
goto語(yǔ)句通常與條件語(yǔ)句配合使用??捎脕?lái)實(shí)現(xiàn)條件轉(zhuǎn)移, 構(gòu)成循環(huán),跳出循環(huán)體等功能,但是,在結(jié)構(gòu)化程序設(shè)計(jì)中一般不主張使用goto語(yǔ)句, 以免造成程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難
例子:輸入-1結(jié)束循環(huán)
#includeint main(void) { int n; scanf("%d", &n); int i; //跳轉(zhuǎn)到這里 out: if (n != -1) {//如果不輸入-1 將一直循環(huán) printf("* "); scanf("%d", &n); goto out;//在這里定義名為out的goto語(yǔ)句 } return 0;}
Tips:
1、對(duì)于循環(huán)語(yǔ)句,可使用一些輔助語(yǔ)句進(jìn)行跳轉(zhuǎn)或結(jié)束,如;break(直接結(jié)束循環(huán)),continue(不再進(jìn)行后面的語(yǔ)句,直接繼續(xù)返回進(jìn)行循環(huán)判斷),goto(無(wú)條件跳轉(zhuǎn),任意跳轉(zhuǎn)到指定位置)
2、 使用循環(huán)語(yǔ)句的情況:如果有固定次數(shù)時(shí),使用for,如果必須執(zhí)行一次時(shí),用do-while,其他情況用while
課外:整數(shù)的分解
1.對(duì)于一個(gè)整數(shù)做%10的操作,就得到它的個(gè)位數(shù)
2.對(duì)于一個(gè)整數(shù)做/10的操作,就去到它的個(gè)位數(shù)
然后再對(duì)2的結(jié)果再做%10,就得到了原來(lái)數(shù)的十位數(shù)了。
其他位數(shù)依次類推...
-
程序
+關(guān)注
關(guān)注
117文章
3787瀏覽量
81076 -
編譯器
+關(guān)注
關(guān)注
1文章
1634瀏覽量
49144
原文標(biāo)題:【零基礎(chǔ)學(xué)C語(yǔ)言】知識(shí)總結(jié)五:3種必學(xué)必會(huì)的循環(huán)結(jié)構(gòu)
文章出處:【微信號(hào):cyuyanxuexi,微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論