for 迴圈


在C++中所提供的重複性計算陳述之一是 for 迴圈式,它的基本語法如下:
for (初始變 數; 判斷式; 遞增式) {
    陳述句一;
    陳述句二;
}

如果陳述句只有一個,也就是非複合陳述句,{ } 可以省略不寫;for 迴圈的第一個初始變數陳述句只會執行一次,之後每次重新進行迴圈時,都會根據判斷式來判斷是否執行下一個迴圈,而每次執行完迴圈之後,都會執行遞增式一 次。

來看個簡單的範例:

#include <iostream>
using namespace std;

int main() {
for(int i = 0; i < 10; i++)
cout << " " << i;

return 0;
}

執行結果:
 0 1 2 3 4 5 6 7 8 9

簡單的例子,但說明for的作用再適合不過,在C++中您可以直接在for中宣告變數與指定初始值,這個宣告的變數在for迴圈結束之後也會自動消失;初 始變數的陳述句只被執行一次,接下來迴圈會根據 i 是否小於10來判斷是否執行迴圈,而每執行一次迴圈就將 i 加1。

for迴圈中也可以再使用for迴圈,大家很喜歡用的例子就是顯示九九乘法表,這邊就用這個例子來說明:

#include <iostream>
using namespace std;

int main() {
for(int j = 1; j < 10; j++) {
for(int i = 2; i < 10; i++) {
int tmp = i * j;
cout << i << "*" << j;
if(tmp >= 10)
cout << "=" << tmp;
else
cout << "= " << tmp;
cout << " ";
}
cout << endl;
}

return 0;
}

執行結果:
2*1=  2  3*1=  3  4*1=  4  5*1=  5  6*1=  6  7*1=  7  8*1=  8  9*1=  9
2*2=  4  3*2=  6  4*2=  8  5*2=10  6*2=12  7*2=14  8*2=16  9*2=18
2*3=  6  3*3=  9  4*3=12  5*3=15  6*3=18  7*3=21  8*3=24  9*3=27
2*4=  8  3*4=12  4*4=16  5*4=20  6*4=24  7*4=28  8*4=32  9*4=36
2*5=10  3*5=15  4*5=20  5*5=25  6*5=30  7*5=35  8*5=40  9*5=45
2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  7*6=42  8*6=48  9*6=54
2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  8*7=56  9*7=63
2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  9*8=72
2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81


事實上,for迴圈的語法其實只是將三個複合陳述區塊寫在一個括號中而已,所不同的是第一個陳述區塊只會執行一次,第二個陳述區塊專司判斷,而第三個陳述 區塊只是一般的陳述句,而不一定只放遞增運算式。

for括號中的每個陳述區塊是以分號(;)作區隔, 而在一個陳述區塊中若想寫兩個以上的陳述句,則使用逗號(,)作區隔,有興趣的話,看看下面這個九九乘法表的寫法,它只使用了一個for迴圈就可以完成九 九乘法表的列印:

#include <iostream>
using namespace std;

int main() {
for (int i = 2, j = 1;
j < 10;
(i==9)?(i=(++j/j)+1):(i++)) {

int tmp = i * j;
cout << i << "*" << j;
cout << ((tmp>=10)? "=": "= ") ;
if(i == 9)
cout << i*j << endl;
else
cout << i*j << " ";
}

return 0;
}

執行結果是一樣的,這個程式的重點在於讓您看看for迴圈的括號中之寫法,當然原則上並不鼓勵這麼寫,程式基本上還是以清楚易懂為原則,至於這個九九乘法 表的演算其實也不難,當中的語法之前都介紹過了,您可以親自演算看看就知道怎麼回事了。