C語(yǔ)言 for語(yǔ)句
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í)行。
在某些情況下,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)體。
點(diǎn)擊加載更多評(píng)論>>