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

C語(yǔ)言 for語(yǔ)句

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

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

for循環(huán)的一般形式如下:

f or (表達(dá)式1:表達(dá)式2:表達(dá)3)

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

說(shuō)明如下:

①表達(dá)式1:通常是給循環(huán)變量賦初值,一般是一個(gè)賦值表達(dá)式。

②表達(dá)式2:通常是循環(huán)條件,是用來(lái)判斷循環(huán)是否繼續(xù)執(zhí)行的關(guān)系表達(dá)式或邏輯表達(dá)式。這個(gè)表達(dá)式通常與某一個(gè)(或多個(gè))變量的值有關(guān),隨著這個(gè)(些)變量值的改變,表達(dá)式的結(jié)果發(fā)生變化,由此來(lái)達(dá)到循環(huán)條件趨近于0,從而退出循環(huán)。這個(gè)(些)變置一般被稱為循環(huán)變量。

③表達(dá)式3:通常可用來(lái)修改循環(huán)變量的值,一般是賦值語(yǔ)句,可將表達(dá)式3稱為循環(huán)步長(zhǎng)。

④循環(huán)語(yǔ)句可以是一條語(yǔ)句,也可以是多條語(yǔ)句,如果是多條語(yǔ)句,要使用復(fù)合語(yǔ)句的形式。

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

①計(jì)算表達(dá)式1,通常用于循環(huán)開(kāi)始前對(duì)循環(huán)變量設(shè)置初值。

②計(jì)算表達(dá)式2,值為0則結(jié)束循環(huán),否則執(zhí)行第3步。

③執(zhí)行循環(huán)語(yǔ)句。

④計(jì)算表達(dá)式3,返回第2步。 for語(yǔ)句的執(zhí)行流程如圖所示。

從執(zhí)行流程圖中可以看出,整個(gè)for循環(huán)過(guò)程中,表達(dá)式1只計(jì)算一次,表達(dá)式2和表達(dá)式3則可能計(jì)算多次。如果開(kāi)始表達(dá)式2的值就為0的話,循環(huán)可以一次也不執(zhí)行。例如:

for(i—10; i<5; i++)

    printf("%d",i);

程序中,先將賦值為10,之后判斷表達(dá)式2: i<5表達(dá)式不成立,所以循環(huán)一次也不執(zhí)行。

image.png

在某些情況下,for語(yǔ)句中的表達(dá)式1、表達(dá)式2、表達(dá)式3都可以省略,而改用其他的方式來(lái)實(shí)現(xiàn)這些功能。例如:輸出1~20之間的整數(shù)。

①正常的程序?yàn)椋?/p>

int i;

    for (i-1;i<=20;i++)

      printf("%d",i);

②省略表達(dá)式1的情況:

int i-1; /*定義變量i并初始化,相當(dāng)于表達(dá)式1的功能*/

for(;i<=20;i++)         /*此處表達(dá)式1省略,但分號(hào)“;”不可以省略*/

    printf ("%d ",i);

③省略表達(dá)式2:

for(i=l;;i++)

{

    if(i〈一20)

        printf ("%d  ",i);

    else

        break;        /*使用break終止循環(huán)*/

}

    此時(shí)for語(yǔ)句沒(méi)有設(shè)定循環(huán)結(jié)束條件,等效于while(1)語(yǔ)句。如果循環(huán)體中沒(méi)有相應(yīng)的控制循環(huán)退出的手段,則造成死循環(huán)。

    break語(yǔ)句用在循環(huán)體內(nèi),可以終止循環(huán)。具體用法將在后面介紹。

④省略表達(dá)式3:

for(i=l;i<-20;)

/*省略的表達(dá)式3放在了循環(huán)體中,分號(hào)“;”同樣不可省略*/

{

    printf("%d  ",i);

    i++;

}

這里需要注意,不要寫(xiě)成如下形式:

for(i=l;i<=20;i++)

{

    printf ("%d ",i);

    i++;

}

這樣寫(xiě)相當(dāng)于i++;執(zhí)行了兩次,那么輸出的就是1?20之間的奇數(shù)了。 

⑤也可以表達(dá)式1、2、3全部省略,則程序可寫(xiě)成如下形式:

int i=l;             /*起到表達(dá)式1的作用*/

for(;;)

{

    if(i<-20)        /*起到表達(dá)式2的作用*/

        printf ("%d

    else

        break;

    i++;             /*起到表達(dá)式3的作用*/

}

3.循環(huán)程序設(shè)計(jì)思路

實(shí)際編程時(shí),不管是用for、while、do-while三種語(yǔ)句中的哪種語(yǔ)句來(lái)實(shí)現(xiàn)循環(huán),在分析問(wèn)題是否使用循環(huán)來(lái)實(shí)現(xiàn)的時(shí)候,需要考慮以下幾個(gè)問(wèn)題:

①輸入是什么?用來(lái)確定原始值。

②輸出是什么?確定應(yīng)該輸出的結(jié)果。

③從輸入轉(zhuǎn)換為輸出需要怎樣的步驟,是否需要重復(fù)。(確定是否需要使用循環(huán)語(yǔ)句,及循環(huán)語(yǔ)句的內(nèi)容)

④如需重復(fù),能否提前預(yù)知重復(fù)的次數(shù)?以便用來(lái)確定使用while、do-while, for哪種循環(huán)語(yǔ)句。

⑤何時(shí)不再需要重復(fù)?以便用來(lái)確定循環(huán)條件,及循環(huán)體中使循環(huán)條件趨近于0的語(yǔ)句。

4.三種循環(huán)的比較

所有需要用到循環(huán)結(jié)構(gòu)的程序,都可以用for、while、do-while中的任何一個(gè)來(lái)實(shí)現(xiàn),區(qū)別只在于某些問(wèn)題用哪種語(yǔ)句更方便。

?對(duì)于已知執(zhí)行次數(shù)的循環(huán)使用fo「循環(huán)更加方便;

?循環(huán)次數(shù)未知,而是需要使用根據(jù)某一條件來(lái)決定是否退出循環(huán)的,可以使用while循環(huán)或do-while 循環(huán)。do-while循環(huán)條件放在循環(huán)體之后,最少執(zhí)行一次循環(huán)體。


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

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