C語言 while循環(huán)語句
1.while循環(huán)的一般形式
while循環(huán)語句的特點(diǎn)是先判斷表達(dá)式,后執(zhí)行循環(huán)體,其一般形式如下:
while(表達(dá)式)
{
循環(huán)語句
}
又分為以下兩種情況:
①表達(dá)式為循環(huán)控制條件,一般是關(guān)系表達(dá)式或邏輯表達(dá)式的形式,例如:
i<=100
i>=0 && i<-100
循環(huán)控制條件也可以是任意合法的C語言表達(dá)式,例如:
while (1)
也是合法的。但注意盡量不要這樣用,因?yàn)榭赡軐?dǎo)致死循環(huán)。
②循環(huán)語句可以是一條簡單語句,也可以是多條語句,如果是一個(gè)以上的語句,必須用花括號括起來,以復(fù)合語句的形式出現(xiàn)。
例如:
i=l;
while (i<-100)
putchar ('*');
i++;
程序的原意是想輸出100個(gè)'*',但由于循環(huán)體沒有使用花括號括起來,所以導(dǎo)致系統(tǒng)認(rèn)為只有“putchar('*');”這一條語句是循環(huán)語句,i++;不屬于循環(huán)體,所以i的值總是為1。那么i永遠(yuǎn)小于等于100,所以這個(gè)循環(huán)將永遠(yuǎn)不結(jié)束,是一個(gè)死循環(huán)。
循環(huán)語句也可以是空語句,例如:
while (i<10);
循環(huán)體中的空語句可以表示循環(huán)不做任何操作,可能只為了消耗CPU的計(jì)算時(shí)間,也有可能是為了占位暫時(shí)使用空語句的形式。
2.while語句的執(zhí)行過程
while的執(zhí)行過程為:計(jì)算表達(dá)式的值,如果表達(dá)式的值為非0,則進(jìn)入循環(huán),執(zhí)行循環(huán)語句,執(zhí)行完循環(huán)語句后轉(zhuǎn)到循環(huán)語句開始處,再次判斷表達(dá)式的值,如果仍為非0,繼續(xù)執(zhí)行循環(huán)體,直到循環(huán)表達(dá)式的值為0,退出循環(huán)。
具體執(zhí)行流程如圖所示。
關(guān)于while循環(huán)有以下四點(diǎn)需要注意。
①循環(huán)體有可能一次也不執(zhí)行,例如:
int i=15;
while(i<10)
{
printf("%d",i);
i++;
}
程序中,循環(huán)條件為K10,當(dāng)i小于10時(shí),進(jìn)入循環(huán),而i的初值為15,從一開始就不符合進(jìn)入循環(huán)的條件,所以循環(huán)體一次也不執(zhí)行。
②循環(huán)在下列情況將退出循環(huán)。
條件表達(dá)式不成立(為0)時(shí)。
在循環(huán)體中遇到break、return等語句時(shí)。
③避免出現(xiàn)無限循環(huán),又叫死循環(huán),例如:
while (1)
i++;
程序中,條件表達(dá)式永遠(yuǎn)為1,所以循環(huán)永遠(yuǎn)不會結(jié)束。
i=15;
while(i>10)
{
i++;
printf ("%d",i);
}
這個(gè)程序中,i的初值為15,當(dāng)進(jìn)入循環(huán)后,執(zhí)行i++,i的值是不斷增大的,所以循環(huán)條件i>10永遠(yuǎn)成立,循環(huán)一直執(zhí)行,構(gòu)成了死循環(huán)
④為了避免出現(xiàn)死循環(huán),循環(huán)體中應(yīng)該有使循環(huán)趨近于結(jié)束的語句。例如:
int i=l;
while (i<=10)
{
printf("%d",i);
i++;
}
程序的功能是輸出1-10之間的整數(shù),本程序中i的初值為1,符合i<=10條件,循環(huán)體中的i++;語句,能使i的值不斷增大,執(zhí)行10次后將使i的值變?yōu)?1,不再符合i<=10條件,退出循環(huán)。
點(diǎn)擊加載更多評論>>