1、do-while語句的一般形式為:
do
語句
while(表達式);
這個循環與while循環的不同在於:它先執行循環中的語句,然后再判斷這個表達式是否為真,如果為真則繼續循環;如果為假,則中止循環。因此do-while語句至少要執行一次循環語句。
例:
#include<stdio.h> void main() { int i,sum=0; i=1; do { sum=sum+i; i++; } while(i<=100); printf("%d",sum); }
區分while語句與do-while語句
#include<stdio.h> void main() { int i,sum=0; scanf("%d",&i); while(i<=10) { sum=sum+i; i++; } printf("%d",sum); }
#include<stdio.h> void main() { int i,sum=0; scanf("%d",&i); do { sum=sum+i; i++; } while(i<=10); printf("%d",sum); }
注:一般情況下,用while和do-while語句解決同一問題時,若二者的循環體部分是一樣的,它們的結果也一樣。但當while后面的“表達式”一開始為“假(0)”時,兩種循環的結果不同。這是因為此時while循環的循環體不被執行,而do-while循環的循環體被執行一次。
2、for語句
在C語言中,for語句使用最為靈活,它完全可以取代while語句。它的一般形式為:for(表達式1;表達式2;表達式3)
過程如下:
(1)先求解表達式1;
(2)求解表達式2,若值為真(非0),則執行for語句中指定的內嵌語句,然后執行下面第3步;若值為假(0),則循環結束,轉到第5步;
(3)求解表達式3;
(4)轉回上面第二步繼續執行。
(5)循環結束,執行for語句下面的一個語句。
理解:for(循環變量賦初值;循環條件;循環變量增量)語句
例
#include<stdio.h> void main() { int i,sum=0; for(i=1;i<=100;i++) { sum=sum+i; } printf("%d",sum); }
注意:(1)for循環中的“表達式1(循環變量賦初值)“、”表達式2(循環條件)“、”表達式3(循環變量增量)“都是選擇項,即可以缺省,但”;“不能缺省。
(2)省略了”表達式1(循環變量賦初值)“,表示不對循環控制變量賦初值。
(3)省略了”表達式2(循環條件)“,則不做其他處理時便成為死循環。
例:for(i=1;;i++)
{
sum=sum+i;
}
(4)省略了”表達式3(循環變量增量)“,則不對循環控制變量進行操作,這時可在語句體中加入修改循環控制變量的語句。
例:for(i=1;i<=100;)
{
sum=sum+i;
i++;
}
(5)3個表達式都可以省略。
例:for(;;)語句相當於while(1)語句(死循環)
(6)表達式1可以是設置循環變量的初值的賦值表達式額,也可以是其他表達式。
例:for(sum=0;i<=100;i++)
sum=sum+i;
(7)表達式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;
(8)表達式2一般是關系表達式或邏輯表達式,但也可以是數值表達式或字符表達式,只要其值非0,就執行循環體。
例:for(;(c=getchar())!='\n';)
{
printf("%c",c);
}