鄭英姿
【摘 要】C語(yǔ)言中的循環(huán)語(yǔ)句有三種:while,do...while,for;for語(yǔ)句使用最為靈活,它完全可以取代while語(yǔ)句,本文針對(duì)簡(jiǎn)單、嵌套for語(yǔ)句,講述它的語(yǔ)法格式、執(zhí)行過(guò)程及應(yīng)用。
【關(guān)鍵詞】for語(yǔ)句格式;for語(yǔ)句應(yīng)用;算法分析;程序
一、引用
在C語(yǔ)言中for循環(huán)語(yǔ)句的使用最為靈活,不僅可以用于循環(huán)次數(shù)確定,而且可以用于循環(huán)次數(shù)不確定的情況,合理的使用for循環(huán)語(yǔ)句可以使程序代碼大大簡(jiǎn)化。如何使用for循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)循環(huán)結(jié)構(gòu)程序設(shè)計(jì),解決實(shí)際問(wèn)題,是我們說(shuō)明的重點(diǎn)。
二、for語(yǔ)句格式
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體語(yǔ)句;
表達(dá)式1為循環(huán)變量賦初值;表達(dá)式2為循環(huán)條件;表達(dá)式3為修改循環(huán)變量。
執(zhí)行過(guò)程:首先計(jì)算<表達(dá)式1>,然后判斷<表達(dá)式2>的值,若其值為非零,執(zhí)行循環(huán)體,然后轉(zhuǎn)③,若<表達(dá)式2>的值為零,則結(jié)束循環(huán),轉(zhuǎn)至④。③求解<表達(dá)式3>,轉(zhuǎn)②執(zhí)行。④執(zhí)行for語(yǔ)句的下一條語(yǔ)句。
三、for語(yǔ)句的幾種形式
1、表達(dá)式1可以省略,此時(shí)應(yīng)在for語(yǔ)句之前給循環(huán)變量賦初值,并且分號(hào)不能省略。2、省略表達(dá)式2,則認(rèn)為循環(huán)條件始終為真,程序?qū)⑾萑胨姥h(huán)。3、表達(dá)式3可省略,此時(shí)應(yīng)在循環(huán)體內(nèi)對(duì)循環(huán)變量進(jìn)行修改,以保證循環(huán)能正常結(jié)束。4、三個(gè)表達(dá)式都省略,此時(shí)應(yīng)在循環(huán)體內(nèi)對(duì)循環(huán)變量進(jìn)行修改,用break語(yǔ)句終止循環(huán)。5、表達(dá)式1、3都可以有一項(xiàng)或多項(xiàng),若有多項(xiàng)則使用逗號(hào)表達(dá)式。
四、for語(yǔ)句的應(yīng)用
1、簡(jiǎn)單for循環(huán)語(yǔ)句的應(yīng)用
例:猴子吃桃子的問(wèn)題:有一天,小猴摘下了若干個(gè)桃子,當(dāng)即吃掉了一般,還不過(guò)癮,又多吃了一個(gè);第二天接著吃了剩下的桃子的一半后又多吃了一個(gè);以后每天都吃尚存桃子的一半零一個(gè),到第10天早上要吃時(shí)只剩下一個(gè)了。問(wèn)小猴第一天共摘了多少個(gè)桃子?
算法分析:已知第10,桃子的個(gè)數(shù)是1;第i=9;桃子的個(gè)數(shù)x=(1+1)×2=4;第i=8;桃子的個(gè)數(shù)x=(4+1)×2=10;.................第i=1;桃子的個(gè)數(shù)x=(x+1)×2;當(dāng)i=1~9執(zhí)行循環(huán)體x=(x+1),執(zhí)行循環(huán)體9次,得到第一天的桃子數(shù)。
程序如下:
#include"stdio.h"
main()
{
inti,x;
x=1;
for(i=9;i>=1;i--)
{
x=(x+1)*2;
printf("i=%2d,x=%d\n",i,x);
}
}
2、for循環(huán)嵌套的應(yīng)用
在一個(gè)循環(huán)體內(nèi)又包含有一個(gè)或多個(gè)完整的循環(huán)結(jié)構(gòu),稱(chēng)為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán)即為多重循環(huán)。執(zhí)行過(guò)程是外層循環(huán)變量改變一次,內(nèi)層循環(huán)完成一次完整的循環(huán)。
例:打印九九乘法表。
分析:需要兩個(gè)循環(huán)變量i,j;利用兩個(gè)for循環(huán)語(yǔ)句嵌套實(shí)現(xiàn),i為外層循環(huán)變量,j為內(nèi)層循環(huán)的變量,i=1時(shí),j=1,i=2時(shí),j=1~i的值.......
程序如下:
#include
voidmain()
{
inti,j;
for(i=1;i<9;i++)
{
for(j=1;j<=i;j++)
printf("%d*%d=%d",i,j,i*j);
printf("\n");
}
}
3、多重for循環(huán)的應(yīng)用
例:百馬百瓦問(wèn)題。有100匹馬,馱100塊瓦,大馬馱3塊,小馬馱2塊,兩個(gè)馬駒馱1塊。問(wèn)大馬、小馬、馬駒各多少?編程列出所有可能的馱瓦方案。
算法分析:設(shè)大馬、小馬、馬駒各有x只、y只、z只,根據(jù)題目要求,可以用下列圖1方程表示,x的取值范圍為1~33,y的取值范圍為1~50,z的取值范圍為2~98。
程序如下:
#include