在計(jì)算機(jī)解決實(shí)際問(wèn)題時(shí),往往需要重讀執(zhí)行特定的一系列步驟或操作,就要用到循環(huán)結(jié)構(gòu)。需要執(zhí)行的一系列操作的次數(shù),有的是事先知道的,稱(chēng)為計(jì)數(shù)器控制的循環(huán);有的是事先不知道的,由特定條件來(lái)控制,稱(chēng)為條件控制的循環(huán)。
一、while循環(huán)
用goto和 if 構(gòu)成循環(huán)
while 語(yǔ)句
do ~ while 語(yǔ)句
for 語(yǔ)句
goto語(yǔ)句及用goto構(gòu)成循環(huán)
goto語(yǔ)句一般格式:
goto 語(yǔ)句標(biāo)號(hào);
標(biāo)號(hào):語(yǔ)句;
無(wú)條件轉(zhuǎn)移語(yǔ)句
說(shuō)明:不能用整數(shù)作標(biāo)號(hào);只能出現(xiàn)在goto所在函數(shù)內(nèi),且唯一;只能加在可執(zhí)行語(yǔ)句前面;限制使用goto語(yǔ)句;
例如:用if 和goto語(yǔ)句構(gòu)成循環(huán)求1到100之和
/*ch5_1.c*/
#include
main()
{ int i,sum=0;
i=1;
loop: if(i<=100)
{ sum+=i;
i++;
goto loop;
}
printf("%d",sum);
}
一般形式
while(表達(dá)式)
循環(huán)體語(yǔ)句;
執(zhí)行流程
While語(yǔ)句特點(diǎn)和說(shuō)明
特點(diǎn):先判斷表達(dá)式,后執(zhí)行循環(huán)體
說(shuō)明:循環(huán)體有可能一次也不執(zhí)行l(wèi)循環(huán)體可為任意類(lèi)型語(yǔ)句
下列情況,退出while循環(huán)
條件表達(dá)式不成立(為零)循環(huán)體內(nèi)遇break,return,gotol無(wú)限循環(huán):
while(1)
循環(huán)體;
例 顯示1~10的平方
/*ch5_21.c*/
#include
main()
{ int i=1;
while(i<=10)
{ printf("%d*%d=%d\\n",i,i,i*i);
i++;
}
}
運(yùn)行結(jié)果:
1*1=1
2*2=4
3*3=9
4*4=16
5*5=25
6*6=36
7*7=49
8*8=64
9*9=81
10*10=100
二、do~while循環(huán)
一般形式:
do
循環(huán)體語(yǔ)句;
while(表達(dá)式);
執(zhí)行流程
do~while語(yǔ)句特點(diǎn)和說(shuō)明
特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式
說(shuō)明:至少執(zhí)行一次循環(huán)體;do~while可轉(zhuǎn)化成while結(jié)構(gòu)
三、for循環(huán)
一般形式
for([expr1] ;[ expr2] ;[ expr3])
循環(huán)體語(yǔ)句;
執(zhí)行流程
for語(yǔ)句一般應(yīng)用形式
for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)
{
循環(huán)體語(yǔ)句;
}
說(shuō)明:
for語(yǔ)句中expr1,expr2 ,expr3 類(lèi)型任意,都可省略,但分號(hào);不可省
無(wú)限循環(huán): for(;;);for語(yǔ)句可以轉(zhuǎn)換成while結(jié)構(gòu)
expr1;
while(expr2)
{
循環(huán)體語(yǔ)句;
expr3;
}
例子
#include
main( )
{ int i;
for(i=0;i<10;i++)
putchar(‘a(chǎn)’+i);
}
運(yùn)行結(jié)果:abcdefghij
四、循環(huán)的嵌套
三種循環(huán)可互相嵌套,層數(shù)不限。外層循環(huán)可包含兩個(gè)以上內(nèi)循環(huán),但不能相互交叉。嵌套循環(huán)的執(zhí)行流程
嵌套循環(huán)的跳轉(zhuǎn)
禁止:從外層跳入內(nèi)層;跳入同層的另一循環(huán);向上跳轉(zhuǎn);
(1) while()
{ ……
while()
{ ……
}
…...
}
(2) do
{ ……
do
{ ……
}while( );
…...
}while( );
(3) while()
{ ……
do
{ ……
}while( );
…….
}
(4) for( ; ;)
{ ……
do
{ ……
}while();
……
while()
{ ……
}
…...
}
程序舉例
for(i=1;i<10;i++)
for(j=1;j<10;j++)
printf((j==9)?"%4d\\n":"%4d",i*j);
循環(huán)的嵌套(圖解)
五、輔助控制語(yǔ)句
break語(yǔ)句
功能:在循環(huán)語(yǔ)句和switch語(yǔ)句中,終止并跳出循環(huán)體或開(kāi)關(guān)體
說(shuō)明:break只能終止并跳出最近一層的結(jié)構(gòu);break不能用于循環(huán)語(yǔ)句和switch語(yǔ)句之外的任何其它語(yǔ)句之中
continue語(yǔ)句
功能:結(jié)束本次循環(huán),跳過(guò)循環(huán)體中尚未執(zhí)行的語(yǔ)句,進(jìn)行下一次是否執(zhí)行循環(huán)體的判斷;僅用于循環(huán)語(yǔ)句中
-
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7360瀏覽量
87632 -
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2253瀏覽量
94283 -
循環(huán)結(jié)構(gòu)
+關(guān)注
關(guān)注
0文章
22瀏覽量
7710
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論