《c++入門經典》筆記6
第六章 控制程式流程
在程式中執行多次的程式碼塊稱為迴圈,其中每次迴圈都稱為迭代
6.2 while迴圈
while迴圈導致程式重複執行一組語句,直到開始條件為false。
下面的while迴圈顯示數字0~99:
int x = 0;
while(x < 100)
{
std::cout<< x <<"\n";
x++;
}
程式清單6.1中,程式Thirteens使用一個while迴圈顯示可被13整除且小於500的所有數字。
程式清單6.1 Thirteens.cpp
break語句導致迴圈立即終止,而不等待條件為false。
程式清單6.2這個程式顯示前20個可被14整除的數
程式清單6.2 Fourteens.cpp
另一種改變迴圈行為的方式是使用continue語句。在迴圈中遇到continue語句時,將跳過餘下的語句,開始下一次迴圈迭代
程式清單6.3這個程式顯示前20個可被15整除的數
程式清單6.3 Fifteens.cpp
6.3 do-wihle迴圈
while迴圈執行迴圈語句前檢查條件表示式,如果條件不可能為true,迴圈語句就不會執行。
而do-while語句將在迴圈末尾檢查條件
也就是do-while迴圈的迴圈體至少會執行一次
程式清單6.4 Badger.cpp
6.4 for迴圈
for迴圈是一種複雜的迴圈,將設定計數器變數、檢查計數器變數是否滿足條件、迭代修改計數器變數這三個步驟合併到了一條語句中。該語句使用關鍵字for,後面是一對括號。括號內,是三條用分號分隔的語句,它們分別初始化計數器、檢查條件和修改計數器
程式清單6.5 MultTable.cpp
多變數for迴圈:
for(int x = 0,y = 0; x < 10;x++,y++)
{
std::cout<< x * y << "\n";
}
這個就等同於:
int x = 0,y = 0;
for(; x < 10;x++,y++)
{
std::cout<< x * y << "\n";
}
巢狀迴圈:
程式清單6.6 BoxMaker.cpp
6.5 switch語句
switch語句檢查一個表示式,並根據其值執行多個程式碼塊中的一個
std::cout<<"You have kulled "<< zombies << " zombie";
switch(zombies)
{
case 0:
std::cout << "s\n";
break;
case 1:
std::cout << "\n";
break;
default:
std::cout << "s\n";
}
在switch語句的case部分,只能進行相等比較,而不能進行關係運算和布林運算。如果有case值與表示式匹配,將執行相應的語句,然後繼續執行到switch塊末尾或遇到的第一個break語句。如果沒有匹配的case部分,將執行可選的default部分。
在上例中,每個case部分都以一條break語句結尾,用於退出switch語句。如果case部分末尾沒有break語句,將繼續執行下一個case部分。在有些情況下,可利用這種辦法來只想多個case部分。
程式清單6.7 BadTeacher.cpp