您好,歡迎進入深圳市穎特新科技有限公司官方網站!
在C語言中,共有三大常用的程序結構:
前面講解了順序結構和選擇結構,本節(jié)開始講解循環(huán)結構。所謂循環(huán)(Loop),就是重復地執(zhí)行同一段代碼,例如要計算 1+2+3+……+99+100 的值,就要重復進行99次加法運算。
while循環(huán)的一般形式為:
while(表達式){
語句塊
}
意思是,先計算“表達式”的值,當值為真(非0)時, 執(zhí)行“語句塊”;執(zhí)行完“語句塊”,再次計算表達式的值,如果為真,繼續(xù)執(zhí)行“語句塊”……這個過程會一直重復,直到表達式的值為假(0),就退出循環(huán),執(zhí)行 while 后面的代碼。
我們通常將“表達式”稱為循環(huán)條件,把“語句塊”稱為循環(huán)體,整個循環(huán)的過程就是不停判斷循環(huán)條件、并執(zhí)行循環(huán)體代碼的過程。
用 while 循環(huán)計算1加到100的值:
運行結果:
5050
代碼分析:
1) 程序運行到 while 時,因為 i=1,i<=100 成立,所以會執(zhí)行循環(huán)體;執(zhí)行結束后 i 的值變?yōu)?2,sum 的值變?yōu)?1。
2) 接下來會繼續(xù)判斷 i<=100是否成立,因為此時 i=2,i<=100 成立,所以繼續(xù)執(zhí)行循環(huán)體;執(zhí)行結束后 i 的值變?yōu)?3,sum 的值變?yōu)?。
3) 重復執(zhí)行步驟 2)。
4) 當循環(huán)進行到第100次,i 的值變?yōu)?101,sum 的值變?yōu)?050;因為此時 i<=100 不再成立,所以就退出循環(huán),不再執(zhí)行循環(huán)體,轉而執(zhí)行while循環(huán)后面的代碼。
while 循環(huán)的整體思路是這樣的:設置一個帶有變量的循環(huán)條件,也即一個帶有變量的表達式;在循環(huán)體中額外添加一條語句,讓它能夠改變循環(huán)條件中變量的值。這樣,隨著循環(huán)的不斷執(zhí)行,循環(huán)條件中變量的值也會不斷變化,終有一個時刻,循環(huán)條件不再成立,整個循環(huán)就結束了。
如果循環(huán)條件中不包含變量,會發(fā)生什么情況呢?
1) 循環(huán)條件成立時的話,while 循環(huán)會一直執(zhí)行下去,永不結束,成為“死循環(huán)”。例如:
運行程序,會不停地輸出“1”,直到用戶強制關閉。
2) 循環(huán)條件不成立的話,while 循環(huán)就一次也不會執(zhí)行。例如:
運行程序,什么也不會輸出。
再看一個例子,統(tǒng)計從鍵盤輸入的一行字符的個數(shù):
運行結果:
Input a string:c.biancheng.net↙
Number of characters: 15
本例程序中的循環(huán)條件為getchar()!='\n'
,其意義是,只要從鍵盤輸入的字符不是回車就繼續(xù)循環(huán)。循環(huán)體n++;
完成對輸入字符個數(shù)計數(shù)。
除了while循環(huán),在C語言中還有一種 do-while 循環(huán)。
do-while循環(huán)的一般形式為:
do{
語句塊
}while(表達式);
do-while循環(huán)與while循環(huán)的不同在于:它會先執(zhí)行“語句塊”,然后再判斷表達式是否為真,如果為真則繼續(xù)循環(huán);如果為假,則終止循環(huán)。因此,do-while 循環(huán)至少要執(zhí)行一次“語句塊”。
用do-while計算1加到100的值:
運行結果:
5050
注意while(i<=100);
最后的分號;
,這個必須要有。
while循環(huán)和do-while各有特點,大家可以適當選擇,實際編程中使用while循環(huán)較多。