計算機概論:C/C++程式設計
|
第4章. 反覆計算:迴圈 |
|
|
授課教師:陳慶瀚 WWW : http://www.miat.ee.isu.edu.tw/cpp E-mail : pierre@isu.edu.tw |
|
4.6 強制迴圈中斷
C++
提供了兩個指令來強制迴圈流程中斷或結束 : · break
-- 從迴圈或switch 結構中跳脫; · continue
-- 跳過一次的迴圈循環。 break陳述只需要單一指令就可以完成: break; 當程式執行到break陳述時,不管迴圈控制的判斷條件為true或false,都會強制跳離它所在的迴圈,而到達迴圈後的第一行陳述。: /*----------------------------------------------------*/ //
範例程式4-12 //
使用break強制for迴圈中斷 //
陳慶瀚,2001 /*----------------------------------------------------*/ #include
<iostream.h> #include
<stdio.h> void
main() { char
ch; for(;;)
{
ch = getchar(); // 輸入一個字元
if(ch=='A')
break; // 如果ch=='A',離開for迴圈
} cout<<"你鍵入字元A"<<endl; } 這個for迴圈是一個無窮迴圈,它將反覆執行直到使用者輸入字元A為止。在迴圈內,我們使用 if(ch=='A')
break; 如果使用者輸入A,ch=='A'為true,則執行break,迴圈被強制中斷,因而程式跳至迴圈後的第一行陳述
cout<<"你鍵入字元A"<<endl; 另一個範例程式是把break放在while迴圈內: /*----------------------------------------------------*/ //
範例程式4-13 //
使用break強制while迴圈中斷 //
陳慶瀚,2001 /*----------------------------------------------------*/ #include
<iostream.h> void
main( ) { int
d = 1, sum = 0; while(d
< 10) { sum
= sum + d; if(sum
> 20)break; d++; } cout<<"d="<<d<<endl; cout<<"sum="<<sum<<endl;
} 程式執行範例:
d=6
sum=21 在這個程式,while迴圈的條件運算式是d < 10,d的初始值是1,迴圈每一次循環,d遞增1。如果沒有強制中斷,d會遞增至10迴圈才會結束。事實上當d=6時,sum=21,sum > 20運算式為true,因此陳述
if(sum > 20)break; 就已強制迴圈結束,輸出結果。 再考慮一個範例程式,我們依照下列的條件讀進並處理一個整數數值。 當讀進的數值為負, 我們希望輸出錯誤訊息並結束迴圈。 當數值大於 100, 我們希望駁回它並讓使用者繼續輸入。 當數值為零, 我們則希望迴圈正常結束 /*----------------------------------------------------*/ //
範例程式4-14 //
結合無窮while迴圈和break中斷 //
陳慶瀚,2001 /*----------------------------------------------------*/ #include
<iostream.h> void
main() { int
value; while
(1) {
cout<<endl<<"請輸入一個整數值 : "; cin>>value; if
(value <= 0) { cout<<"數值太小,重來一次!\n"; } else
if (value > 100) { cout<<"數值太大,重來一次!\n"; } else
{ cout<<"OK!再見!\n"); break;
//跳離while迴圈
} }
程式執行範例1: 請輸入一個整數值 : 1234 數值太大,重來一次! 請輸入一個整數值 : 0 數值太小,重來一次! 請輸入一個整數值 : 50 OK!再見! 另一個強制迴圈中斷的指令continue,與break指令應用的時機相當,但是相對於break強制迴圈結束的做法,continue則僅是強制迴圈跳離目前的迴圈循環,而直接進入下一個迴圈循環。 /*----------------------------------------------------*/ //
範例程式4-15 //
使用continue中斷迴圈循環 //
陳慶瀚,2001 /*----------------------------------------------------*/ #include
<iostream.h> void
main() {
int x=0; while(x!=20)
{ x++; if((x%2)==0)continue; cout<<"x
= "<<x<<endl; } } 我們想要輸出1到20之間的奇數,所以x從0遞增至20才結束。在迴圈內有一行陳述
if((x%2)==0)continue; 其中x%2將得出x除以2的餘數,如果餘數等於0,則條件運算式(x%2)==0將為true,此時執行中斷迴圈循環的指令continue,其結果將使得程式忽略後方的程式碼,即
cout<<"x = "<<x<<endl; 課堂練習TD4-10: 重作課堂練習4-8的程式,也就是寫一個程式請使用者輸入一個任意正整數K,K被2輾轉相除n次後,其商為0,輸出n。但改用for迴圈,配合break的使用。
課堂練習TD4-11: 請找出大於1000且距離1000最近的第一個質數,使用for或while迴圈,配合break的使用。
|
||
計算機概論:C/C++程式設計 義守大學電機系 陳慶瀚 |