V.萬惡的迴圈
1.for迴圈
>語的法<
來看for迴圈吧,首先宣告一個暫時變數i,
- 注意!!此變數是暫時的,只要出了這支for迴圈,就不見了
再來的i<=n,是判斷式,若為假則跳出迴圈;為真則繼續下去。最後到了遞增式,i++是i=i+1的縮寫,中間的等號不是代表等於,你可以把他記成將右值帶入左值。
以下是縮寫規則:
- i=i+1 縮寫成 i+=1 或 i++ (i=i-1時也可這樣縮!)i=i+n 縮寫成 i+=n
- 縮寫比較:i++和++i 在這個for迴圈中,把i++寫成++i是一樣的意思,至於他們倆個的差別在於++i是先運算後取值,而i++是先取值後運算。
例如:
a=1;
b=1;
c=a++;
d=++b;
cout<
第兩例:
練習題輸入一個正整數n,輸出1x2x3x...xn。(n!)
(※注意,n大概只能到十幾,就會超過int的最大值了喔,要解決此問題可在以後學到大數問題再說吧!)我的解(答案僅供參考!)
2.while迴圈
>語的法<
當電腦跑到while迴圈時,會先去看判斷式。若判斷是為假,則跳出迴圈;若為真,則執行大括號內的內容,整個跑完後,再去執行判斷式,從此以後,不斷重複以上的動作。
跟for不一樣的是,while沒有遞增式,若沒在大括號內的程式碼改變判斷式的內容,判斷式原本又為真的話,電腦就會一直跑下去。
在往後的解題日子中,時常會遇到好幾組測資需要重複輸入,這時就把while拿出來用吧!你可以這樣寫:
或是這樣(感覺比較有feel):
以上while的判斷式中,代表輸入成功會回傳真。 話說,如果再while(1)之後的大括號內不寫程式碼的話,執行時會有件很開心的事發生。 來個範例吧!以下是計算到某範圍內偶數總合的程式碼!(2+4+6+....n)
當i<=我們輸入的range時,電腦就會不斷的執行while內的指令。而不想讓它變成無限迴圈,就得再迴圈執行時改變條件,看你是要放入遞增式,或是使用if-else判斷式都可以。
3.do-while迴圈
>語的法<
- ※注意while(判斷式)後的分號喔!!!
當電腦碰到了do-while迴圈,就馬上去跑一次大括號內的程式碼。全部都跑過後,才去看判斷式。若~判斷式為假,立刻就蹦出迴圈;若為真,則再執行一次大刮號內的程式碼。從此以後,日復一日,秒復一秒的重複以上動作,直到跳出迴圈。
do-while迴圈可說是while的一種變形,基本上都與while差不多,主要的差異是在,do-while不論判斷式是真是假,不分青紅皂白的,一律先執行一次程式碼。 其實,到目前為止,俺發現while能寫的,do-while也寫得出來,只需稍稍修一下程式碼而已。
範例就把while的借來改一下吧~~
4.break && continue
break:跳出離它最近的迴圈
以下是個很清楚的例子:
這樣的話會輸出→0 1 2 3 4 5 6 7
當i等於8時,因為break了,所以跳出了此for迴圈,想當然耳,也就不會輸出7後面的數字了。
continue:忽略下面指令而繼續下一次的迴圈
以下也是個很清楚的例子:
這樣的話會輸出→0 1 2 3 4 5 6 7 9 10
當 i 等於8時;跳過下面cout<
其實,不管把break或continue寫在巢狀判斷的多裡面,break一定會往外一直找,直到跳出一個離它最近的迴圈;而continue呢,會瘋狂的忽略在他一下所有非迴圈的東西,直到找到迴圈的結束,在執行下一次的迴圈喔!
沒有留言:
張貼留言