在C語言中,有三種類型的迴圈語句:for語句、while語句和do While語句。分別介紹如下: 摺疊 for for為當型迴圈語句,它很好地體現了正確表達迴圈結構應註意的三個問題: ⑴控制變數的初始化。 ⑵迴圈的條件。 ⑶迴圈控制變數的更新。 for表達式 表達式1:一般為賦值表達式,給控制變數 ...
在C語言中,有三種類型的迴圈語句:for語句、while語句和do While語句。分別介紹如下:
摺疊 for
- for為當型迴圈語句,它很好地體現了正確表達迴圈結構應註意的三個問題:
⑴控制變數的初始化。
⑵迴圈的條件。
⑶迴圈控制變數的更新。
- for表達式
表達式2:關係表達式或邏輯表達式,迴圈控制條件;
表達式3:一般為賦值表達式,給控制變數增量或減量。
語句:迴圈體,當有多條語句時,必須使用複合語句。
- for語句格式為:
for(表達式1;表達式2;表達式3)語句:/*迴圈體*/
- for語句執行過程如下:
②判別表達式2是否滿足給定條件,若其值為真,滿足迴圈條件,則執行迴圈體內語句,然後執行表達式3,進入第二次迴圈,再判別表達式2……;否則判斷表達式2的值為假,不滿足條件,就終止for迴圈,執行迴圈體外語句。for語句語法流程如下圖所示:
- 例題:
迴圈語句# include
main ()
{
int n,nu;
nu=0;
for (n=1;n<=200;n++)
nu+=n; //a+=b就是a=a+b
printf ("nu=%d\n",nu);
}
編譯並執行後,屏幕顯示:
nu=20100
在程式中,for語句小括弧內的三個表達式分別為:n=1;n<=200;n++。表達式1,n=1是給n賦初值,表達式2是關係表達式,n小於等於200時,表達式都為真,則執行迴圈體內的語句nu+=n;(即nu=nu+n;),然後執行表達式3(n++),進入下一輪迴圈;若n大於200時,表達式2為假,則終止迴圈,執行printf()語句,在屏幕上列印出:nu=20100。
- 幾種特殊for語句的用法:
⑴for小括弧內三個表達式為空
例 for(;;)
printf ("test");
在小括弧內只有兩個分號,無表達式。表示無限迴圈。這種無限迴圈適用於菜單選擇程式中。
⑵沒有迴圈體的for語句
例:for(; *str==''; str++);
這種情況迴圈體內的語句只是一個分號,這個for迴圈是指針str所指流中的前導空格刪除。
例:for (t=0;t ;)
此例在程式中起延時作用。
摺疊 while
►while結構迴圈為當型迴圈(when type loop),一般用於不知道迴圈次數的情況。維持迴圈的是一個條件表達式,條件成立執行迴圈體,條件不成立退出迴圈。
- while語句格式為:
►{
► 迴圈體;
►}
►每次執行迴圈體前都要對條件表達式進行判斷。
這裡的表達式是迴圈能否繼續下去的條件,而語句是迴圈體。只要表達式為真,則執行迴圈體內語句。否則終止迴圈,執行迴圈體外語句。
- 例題:f7_2.c
# include h
main ()
{
int u,v,temp;
printf("請輸入兩個非負整數:\n");
scanf("% d % d ",& u,&v);
While(v!=0)
{
temp=u% v;/*迴圈體內語句*/
u=v; /*迴圈體內語句*/
v=temp; /*迴圈體內語句*/
}
printf("最大公約數是:%d\n",u);
}
編譯並執行結果,屏幕顯示:
請輸入兩個非負整數:
若從鍵盤輸入:150 35並回車,屏幕顯示:
最大公約數是:5
程式中,while迴圈體內有三條語句,應用大括弧括起來,表示一個語句塊。當表達式v!=0為真時,程式迴圈執行迴圈體內三條語句,直到v!=0為假時,終止迴圈,執行printf()語句,在屏幕上顯示最大公約數。
摺疊 dowhile
►do…while語句結構為直到型迴圈(until type loop),也用於不知道迴圈次數的情況。do…while和while的區別在於do…while結構是執行完一遍迴圈體再判斷條件。
- do while語句格式為:
►{
► 迴圈體;
►}while(條件表達式);
►每執行完一次迴圈體,do…while結構都要判斷一下條件表達式。
程式進入do while迴圈後,先執行迴圈體內語句,然後判斷表達式的真假,若為真則進行
下一次迴圈,否則為假則終止迴圈。該迴圈語句的特點是,表達式為假時也執行一次迴圈體內語句。
- do while語句語法流程如下圖所示:
總的說來,for和while迴圈是在頂上測試迴圈終止條件,而do while迴圈是在之後,在底部進行測試所以迴圈體至少要執行一次。
利用do while迴圈的特點,可寫出菜單程式。
- 例題:
#include<stdio.h>
main ()
{
char ch;
printf("1.輸入記錄\n");
printf("2.刪除記錄\n");
printf("3.顯示記錄\n");
printf("請選擇:\n");
do
{
ch=getchar ();
switch (ch)
{
case '1' :printf ("輸入記錄 \n");
break;
case '2' :printf ("刪除記錄 \n");
break;
case '3' :printf ("顯示記錄 \n");
break;
default:printf("選擇錯!\n");
}
}while(ch!='1'&&ch!='2'&&ch!='3');
}
while與do while的區別
►假設條件表達式一開始就是不成立的。
►while結構的迴圈體一遍也不會運行。
►do…while結構的迴圈體運行了一遍。
本程式執行的過程是,通過do while迴圈體內的第一條語句ch=getchar ()接收用戶的選擇,第二條語句switch判斷用戶輸入是否是'1','2','3',若不是則顯示"選擇錯!"。程式利用do while語句的特點,首先執行迴圈體內語句一次,然後用表達式ch!='1'&&ch!='2'&& ch!='3'來迴圈判斷用戶的鍵盤輸入,只要不是'1'、'2'、'3',程式總是在這裡迴圈。
這個程式實例只是為了說明do while語句用法,實際應用中的菜單程式,要在每條case語句冒號後面寫出要調用的相應函數。
總結以上三種迴圈語句,for語句的功能最強,它有多種特殊形式。該語句小括弧內的表達式,可任意變動,可以省略,也可以增加。例如,在小括弧內的分號間增加幾個表達式如for(m=0,h=1;n<100;n++),或for (h=0,j-50;h<=j;h++,j--)等等。可以將迴圈體的一些語句放在表達式3的位置,中間用逗號分隔。如:for (i=1,j=strlen (me); i 三種迴圈語句,均可嵌套使用,也就是在一個迴圈內又包含另一個迴圈結構。也可互相嵌套使用,可有多曾嵌套結構。
軟道語錄
迴圈語句
迴圈語句就是根據迴圈條件反覆執行相同的語句,直到迴圈條件不成立。