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

C語(yǔ)言 do-while語(yǔ)句

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

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

do-while循環(huán)同while循環(huán)一樣,也適合于循環(huán)次數(shù)不確定的情況,do-while循環(huán)的特點(diǎn)是先執(zhí)行循環(huán)體,再測(cè)試條件是否成立。 do-while循環(huán)的一般形式為:

do

{

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

}while(表達(dá)式);

又分為以下幾種情況:

①表達(dá)式為循環(huán)控制條件,通常是關(guān)系表達(dá)式或邏輯表達(dá)式的形式,也可以是任意合法的C語(yǔ)言表達(dá)式。

②雖然在do-while循環(huán)中,當(dāng)循環(huán)語(yǔ)句是一條簡(jiǎn)單語(yǔ)句,可以不加大括號(hào),但還是建議不論是單條語(yǔ)句還是多條語(yǔ)句,盡量都以復(fù)合語(yǔ)句的形式出現(xiàn),以保證程序的結(jié)構(gòu)清晰。 

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

do

{

    ;

}while(i<10);

④do-while循環(huán)中while后面的“;”不可以省略。


2.do-while循環(huán)的執(zhí)行過(guò)程

do-While循環(huán)的執(zhí)行過(guò)程為:先執(zhí)行一次循環(huán)體,遇到循環(huán)條件,計(jì)算并判斷循環(huán)表達(dá)式是否為非0,如果為非0,繼續(xù)執(zhí)行循環(huán)體,否則結(jié)束循環(huán)。do-while循環(huán)的執(zhí)行流程圖如圖所示。

image.png

do-while循環(huán)有三個(gè)方面需要注意:

①?gòu)牧鞒虉D中可以看出,do-while循環(huán)中,哪怕從最開(kāi)始時(shí)循環(huán)表達(dá)式就不成立,循環(huán)語(yǔ)句也至少被執(zhí)行一次,例如:

int i=21; 

do 

{

    printf ("%d\n",i);

    i++;

}while(i<20);

    程序中,變量i的初值為21,遇到do-while循環(huán),先執(zhí)行循環(huán)體,輸出i,并使i增1。之后判斷循環(huán)條件i<20是否成立,i的值此時(shí)已是22,循環(huán)條件不成立,退出循環(huán)。雖然i的值最開(kāi)始就不小于20,但也執(zhí)行了一次循環(huán)體。

②和while循環(huán)一樣,do-while循環(huán)也在出現(xiàn)下列情況時(shí)退出循環(huán):

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

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

③避免程序中出現(xiàn)死循環(huán),循環(huán)體中應(yīng)該有使循環(huán)趨近于結(jié)束的語(yǔ)句,或者設(shè)置能夠結(jié)束循環(huán)的循環(huán)條件。例如:

int x=0;

do

{

    if (x%2==0)

        printf ("%d is even number\n",x);

    else

        printf ("%d is not even number\n",x); 

    scanf ("%d",&x);

}while(x>0 && x<=100);

    程序需要判斷輸入的0?100之間的一組整數(shù),哪個(gè)是偶數(shù),哪個(gè)奇數(shù)。因循環(huán)體實(shí)現(xiàn)的功能是輸入數(shù)據(jù)并判斷奇偶數(shù),要想結(jié)束循環(huán),只要輸入一個(gè)0?100之外的數(shù)字即可。所以本程序的循環(huán)結(jié)束是由用戶自己控制的,輸入一個(gè)不符合條件的值即可結(jié)束循環(huán)。 


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

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