for迴圈
在C語言中,for語句使用最為靈活,它完全可以取代 while 語句。它的一般形式為:
for(運算式1;運算式2;運算式3) 語句
它的執行過程如下:
1) 先執行運算式1。 2) 再執行運算式2,若其值為真(非0),則執行for語句中指定的內嵌語句,然後執行下面 第 3 步;若其值為假(為0),則結束迴圈,轉到第 5 步。 3) 執行運算式 3。 4) 轉回上面第 2 步繼續執行。 5) 迴圈結束,執行 for 語句下面的一個語句。 其執行過程可用右圖表示。 |
for語句最簡單的應用形式也是最容易理解的形式如下:
for(迴圈變數給予初值;迴圈條件;迴圈變數增量) 語句
迴圈變數給予初值總是一個給予值語句, 它用來給迴圈控制變數給予初值; 迴圈條件是一個關係運算式,它決定什麼時候退出迴圈;迴圈變數增量,定義迴圈控制變數每迴圈一次後 ,按什麼方式變化。這三個部分之間用“;”分開。
例如:
for(i=1;i<=100; i++) { sum=sum+i; } |
for(i=1;i<=100; i++) sum=sum+i; |
迴圈內容(即 { })只有一行,可以省略 { } |
先給i給予初值1,判斷i是否小於等於100, 若是則執行語句,之後值增加1。再重新判斷, 直到條件為假,即 i>100 時,結束迴圈。
相當於:
i=1; while(i<=100) { sum=sum+i; i++; } |
for(i=1;i<=100; i++) sum=sum+i; |
左右兩邊的程式,執行後結果相同。 |
對於for迴圈中語句的一般形式,就是如下的while迴圈形式:
運算式1;
while(運算式2)
{
語句
運算式3;
}
注意:
1) for迴圈中的“運算式1(迴圈變數給予初值)”、“運算式2(迴圈條件)”和“運算式3(迴圈變數增量)”都是選擇項, 即可以缺省,但“;”不能缺省。
2) 省略了“運算式1(迴圈變數給予初值)”, 表示不對迴圈控制變數給予初值。
3) 省略了“運算式2(迴圈條件)”, 則不做其他處理時便成為閉環。
例如:
for(i=1; ;i++)
sum=sum+i;
相當於:
i=1;
while(1)
{
sum=sum+i;
i++;
}
4) 省略了“運算式3(迴圈變數增量)”, 則不對迴圈控制變數進行操作,這時可在語句體中加入修改迴圈控制變數的語句。
例如:
for(i=1;i<=100;)
{
sum=sum+i;
i++;
}
5) 省略了“運算式1(迴圈變數給予初值)”和“運算式3(迴圈變數增量)”。
例如:
for(;i<=100;)
{
sum=sum+i;
i++;
}
相當於:
while(i<=100)
{
sum=sum+i;
i++;
}
6) 3個運算式都可以省略。
例如:
for(;;)語句
相當於:
while(1)語句
7) 運算式1可以是設置迴圈變數的初值的給予值運算式,也可以是其他運算式。
例如:
for(sum=0;i<=100;i++)
sum=sum+i;
8) 運算式1和運算式3可以是一個簡單運算式也可以是逗號運算式。
for(sum=0,i=1;i<=100;i++)
sum=sum+i;
或:
for(i=0,j=100;i<=100;i++,j--)
k=i+j;
9) 運算式2一般是關係運算式或邏輯運算式,但也可是數值運算式或字元運算式,只要其值非零,就執行循環體。
例如:
for(i=0;(c=getchar())!=’\n’;i+=c);
又如:
for(;(c=getchar())!=’\n’;)
printf(“%c”,c);