位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C語(yǔ)言 > 問(wèn)題詳情

C語(yǔ)言 while循環(huán)語(yǔ)句

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-30

1.while循環(huán)的一般形式

while循環(huán)語(yǔ)句的特點(diǎn)是先判斷表達(dá)式,后執(zhí)行循環(huán)體,其一般形式如下:

while(表達(dá)式)

{

    循環(huán)語(yǔ)句

}

又分為以下兩種情況:

①表達(dá)式為循環(huán)控制條件,一般是關(guān)系表達(dá)式或邏輯表達(dá)式的形式,例如: 

i<=100

i>=0 && i<-100

循環(huán)控制條件也可以是任意合法的C語(yǔ)言表達(dá)式,例如:

while (1)

也是合法的。但注意盡量不要這樣用,因?yàn)榭赡軐?dǎo)致死循環(huán)。

②循環(huán)語(yǔ)句可以是一條簡(jiǎn)單語(yǔ)句,也可以是多條語(yǔ)句,如果是一個(gè)以上的語(yǔ)句,必須用花括號(hào)括起來(lái),以復(fù)合語(yǔ)句的形式出現(xiàn)。

例如:

i=l;

while (i<-100)

    putchar ('*');

i++;

    程序的原意是想輸出100個(gè)'*',但由于循環(huán)體沒(méi)有使用花括號(hào)括起來(lái),所以導(dǎo)致系統(tǒng)認(rèn)為只有“putchar('*');”這一條語(yǔ)句是循環(huán)語(yǔ)句,i++;不屬于循環(huán)體,所以i的值總是為1。那么i永遠(yuǎn)小于等于100,所以這個(gè)循環(huán)將永遠(yuǎn)不結(jié)束,是一個(gè)死循環(huán)。

    循環(huán)語(yǔ)句也可以是空語(yǔ)句,例如:

     while (i<10);

    循環(huán)體中的空語(yǔ)句可以表示循環(huán)不做任何操作,可能只為了消耗CPU的計(jì)算時(shí)間,也有可能是為了占位暫時(shí)使用空語(yǔ)句的形式。

2.while語(yǔ)句的執(zhí)行過(guò)程

    while的執(zhí)行過(guò)程為:計(jì)算表達(dá)式的值,如果表達(dá)式的值為非0,則進(jìn)入循環(huán),執(zhí)行循環(huán)語(yǔ)句,執(zhí)行完循環(huán)語(yǔ)句后轉(zhuǎn)到循環(huán)語(yǔ)句開(kāi)始處,再次判斷表達(dá)式的值,如果仍為非0,繼續(xù)執(zhí)行循環(huán)體,直到循環(huán)表達(dá)式的值為0,退出循環(huán)。

    具體執(zhí)行流程如圖所示。

image.png

關(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,從一開(kāi)始就不符合進(jìn)入循環(huán)的條件,所以循環(huán)體一次也不執(zhí)行。

②循環(huán)在下列情況將退出循環(huán)。

    條件表達(dá)式不成立(為0)時(shí)。

    在循環(huán)體中遇到break、return等語(yǔ)句時(shí)。

③避免出現(xiàn)無(wú)限循環(huán),又叫死循環(huán),例如:

while (1)

i++;

程序中,條件表達(dá)式永遠(yuǎn)為1,所以循環(huán)永遠(yuǎn)不會(huì)結(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é)束的語(yǔ)句。例如:

int i=l; 

while (i<=10)

{

    printf("%d",i);

    i++;

}

    程序的功能是輸出1-10之間的整數(shù),本程序中i的初值為1,符合i<=10條件,循環(huán)體中的i++;語(yǔ)句,能使i的值不斷增大,執(zhí)行10次后將使i的值變?yōu)?1,不再符合i<=10條件,退出循環(huán)。


繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部