#@#迴圈#@#
C++提供的for、while及do while迴圈,可以在需要重複執行某項功能時,根據程式的需求與習慣,加以選擇使用。舉例來說,平常面對輸出1~5時,如果使用cout直接輸出,這樣會很慢,這時就可以使用迴圈。
#@#for迴圈#@#
01 //Prog5_1 迴圈
02 #include<iostream>
03 using namespace std;
04 int main(void)
05 {
06 for(int i=1;i<=5;i++)
07 cout<<i<<endl;
08 system(“pause”);
09 return 0;
10 }
For迴圈是使用率最高的迴圈,若是很清楚的知道迴圈要執行的次數時,就可以使用for迴圈,其格式如下:
for(設定迴圈初值;判斷條件;設定增減量)
{
迴圈主體;
}
【註解】若是在迴圈主體中要處理的敘述只有一個,左右大括號可去除。
(1) 第一次進入for迴圈時,設定迴圈控制變數的起初值。
(2) 根據判斷條件的內容,檢查是否要繼續執行迴圈。當判斷條件為true,繼續執行迴圈主體;當判斷條件為false,則跳出迴圈執行其他敘述。
(3) 執行完迴圈主體後,迴圈控制變數會根據增減量的設定,更改迴圈控制變數的值。
#@#迴圈的區域變數#@#
在迴圈裡宣告的變數稱為區域變數,只要跳出迴圈這個變數便不能在被使用。變數的適用的區域僅含括變數的兩個大括弧之間。
01 //Prog5_2 區域變數
02 #include<iostream>
03 using namespace std;
04 int main()
05 {
06 int i=15;
07 for(int i=1;i<=5;i++){
08 cout<<i<<endl;
09 }
10 cout<<i<<endl;
11 system("pause");
12 }
以上這個例子,其中第七行的i:其變數範圍為第六行~第十四行兩個大括號間:而第九行的i:其變數範圍為第九行~第十一行兩個大括號間。
#@#while迴圈#@#
當迴圈重複執行的次數很確定時,會使用for迴圈。但是對於有些問題,無法事先知道迴圈需要執行多少次時,就可以考慮while迴圈或do while迴圈。
01 //Prog5_3 while 迴圈
02 #include<iostream>
03 using namespace std;
04 int main()
05 {
06 int i=0;
07 while(i<=5){
08 cout<<i<<endl;
09 i++;
10 }
11 system("pause");
12 }
設定迴圈初值;
while(判斷條件)
{
迴圈主體;
設定遞增量;
}
【註解】若是在迴圈主體中要處理的敘述只有一個,左右大括號可去除。
(1) 第一次進入while迴圈前,就必須先設定迴圈控制變數的起初值。
(2) 根據判斷條件的內容,檢查是否要繼續執行迴圈,如果條件判斷值為true,則繼續執行迴圈主體;如果條件判斷值為false,則跳出迴圈執行後續敘述。
(3) 執行完迴圈主體內的敘述後,重新設定控制變數的値,由於while迴圈不會主動改變控制變數的値,所以要有第六行和第八行的敘述。
#@#do while迴圈#
do while迴圈也是用於迴圈執行次數未知的情況。do while迴圈是「先做在說」,每執行完一次迴圈主體後,再測試判斷條件的真假,因此不管迴圈成立的條件為何,使用do while迴圈時,至少都會執行一次迴圈的主體。
01 //Prog5_4 do while 迴圈
02 #include<iostream>
03 using namespace std;
04 int main()
05 {
06 int i=1;
07 do{
08 cout<<i<<endl;
09 i++;
10 }while(i<=5);
11 system("pause");
12 }
設定迴圈初值;
do
{
迴圈主體;
設定增減量;
}while(判斷條件);
【註解】若是在迴圈主體中要處理的敘述只有一個,左右大括號可去除。
(1) 進入do while迴圈前,要先設定迴圈的控制變數起始值。
(2) 直接執行迴圈主體,迴圈主體執行完畢,才開始根據判斷條件的內容,檢查是否繼續執行迴圈。若條件式的判斷値為true:繼續執行迴圈主體;如果條件式的判斷値為false:則跳出迴圈,並執行後續敘述。
(3) 執行完迴圈主體內的敘述後,重新設定控制變數的値,由於while迴圈不會主動改變控制變數的値,所以要有第六行和第十行的敘述。
#@#迴圈的跳離#(Prog5_5)
C++中雖然有跳離敘述,如break、continue等敘述,站在結構化程式設計的角度並不鼓勵使用者使用,因為這些跳離敘述會增加除錯及閱讀上的困難。
break 敘述:可以讓程式強迫跳離迴圈。當程式執行到break敘述時,即會離開迴圈,繼續執行迴圈外的下個敘述。
for(初值設定;判斷條件;設增減量)
{
敘述1;
break;
}
敘述2;
continue 敘述:可以強迫程式跳到迴圈的起頭,當程式執行到continue敘述時,即會停止執行剩餘圈主體,而到迴圈的開始處繼續執行。
for(初值設定;判斷條件;設增減量)
{
敘述1;
continue;
}
01 //Prog5_4 迴圈的跳離
02 #include<iostream>
03 using namespace std;
04 int main()
05 {
06 int a,b;
07 while(cin>>a>>b){
08 if(a==1 && b==2){
09 cout<<"Pass!!"<<endl;
10 break;
11 }
12 else{
13 cout<<"False!!"<<endl;
14 continue;
15 }
16 }
17 system("pause");
18 }
#@#巢狀迴圈#(Prog5_6)
迴圈的主體又有其他迴圈時,就稱為巢狀迴圈。
01 //Prog5_5
02 #include<iostream>
03 using namespace std;
04 int main()
05 {
06 int i,j;
07 for(int i=0;i<5;i++){
08 for(int j=0;j<5;j++){
09 cout<<"# ";
10 }
11 cout<<endl;
12 }
13 cout<<endl;
14 for(int i=0;i<5;i++)
15 cout<<"# # # # #"<<endl;
16 system("pause");
17 }