break 與 continue 敘述的使用

(一) break 敘述

◎も使用時機: 在迴圈(不論是for迴圈或while迴圈)執行時,通常要把「要重複的敘述群」執行完一遍之後,再去檢視迴圈「條件式」是否成立。如果需要臨時強迫離開迴圈,也就是把還沒執行完的敘述群丟在一邊,直接離開迴圈時(不必管條件式成不成立),就是使用break敘述的時機。此敘述一般要搭配 if 敘述使用才恰當。

◎も圖示:

for 或 while ( ..... )
{
    ....... A段 .......
    if (條件式)
        break ;

    ....... B段 .......
}
....... C段 .......

從上段程式來說,如果執行到 if 敘述時其「條件式」成立,那麼接下來執行 break敘述之後,程式流程就會省略B段部分,直接跳到C段去執行,換言之就是離開迴圈了

◎も範例:電腦以亂數產生一數(num)之後,使用者不斷猜測該數(guess),每次猜測時電腦必須提示猜的太大或太小,此動作一直重複直到猜中為止。

count = 1 ;
while (true)
{
    printf ("第 %d 次猜測:\n", count) ;
    printf ("請猜測一數:") ;
    scanf ("%d", &guess) ;
    if (guess > num)
        printf ("太大!\n") ;
    else if (guess < num)
        printf ("太小!\n") ;
    else
    {
        printf ("猜中了!\n") ;
        break ;
    }
    count++ ;         //  如果猜中了則此行不會執行
}   // while loop

 

(二) continue 敘述

◎も使用時機: 在迴圈(不論是for迴圈或while迴圈)執行時,通常要把「要重複的敘述群」執行完一遍之後,再去檢視迴圈「條件式」是否成立。在某些時候如果需要暫停『本次』迴圈,也就是把還沒執行完的敘述群先丟在一邊,重新檢視迴圈「條件式」準備重啟迴圈時,就是使用continue敘述的時機。此敘述一般要搭配 if 敘述使用才恰當。

◎も圖示:

for 或 while ( ..... )
{
    ....... A段 .......
    if (條件式)
        continue ;

    ....... B段 .......
}

從上段程式來說,如果執行到 if 敘述時其「條件式」成立,那麼接下來執行continue敘述之後,程式流程就會省略B段部分(當作本次迴圈已經執行完畢),重回到迴圈的條件式判斷。換言之就是本次迴圈執行完畢,要繼續下一次的條件式檢視了。

◎も範例:將 2到100中的偶數相加,但必須排除10的倍數,也就是2+4+6+8+12+14+.....,最後印出總和。

sum = 0 ;
for (x=2 ; x<=100 ; x+=2)
{
    if  (x % 10 == 0)          //  如果 x是10的倍數則閃過後面的 sum = sum + x; 敘述
        continue ;
    sum = sum + x;
}
printf ("總和:%d \n", sum) ;