do-while語句及for語句(初學者)
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);
}