C語言簡介:迴圈
本教學面向新手,故教學內容多為基礎知識,倘若您希望學習進階內容,本文並不符合您的需求。
本文為C語言簡介系列第三篇文章,前一篇文章為C語言簡介:條件判斷。
傳說中,薛西弗斯被處罰永遠把一顆石頭推上山頂,但是每次石頭到達頂部後又會滾回山腳,所以薛西弗斯必須再次將石頭推回山頂,但是石頭又會滾回山腳…
薛西弗斯必須重複做這件枯燥乏味的事直到天荒地老…要是薛西弗斯有學過迴圈(loop)就不一樣了 當我們遇到極為相似、要重複執行的內容時,就可以不用像薛西弗斯一樣,重複寫一模一樣的程式、一直做一模一樣的事了!
for迴圈
先來簡單介紹一下 for 的語法
for (<初始值>; <條件式>; <遞增、遞減等>) { |
印出1到10之間所有整數
如果我們要印出1到10之間的所有整數,我們可以用 for 迴圈來做到。
以下提供範例程式。
1 |
|
如果在 for 迴圈外使用 printf("%d", i),其值會是多少呢?
…
…
…
沒錯!會報錯!為什麼呢?因為這裡的 i 的生命週期只限於迴圈內部!當離開了 for 迴圈,i 就已經是不可使用的變數了喔。這是所謂的區域變數 (Local Variable)。
試試看
請試印出從11到20之間所有整數。
雙層for迴圈
雙層for迴圈可以有許多應用,例如當我們要列印出一張九九乘法表,因為有2個變數(被乘數 與 乘數),最直覺的做法是用雙層 for 迴圈控制2個變數。
九九乘法表參考解答如下
1 |
|
註:第5行的
\t的作用在C語言簡介:基本輸入輸出有說明。
試試看
將第五行的
5 | printf("%d * %d = %d\t", j, i, i * j); |
i 跟 j 的順序顛倒過來,輸出結果會長怎樣?
試試看
利用雙層 for 迴圈結構,在螢幕上印出如下所示的星星三角形
* |
while迴圈
以下是 while 迴圈的語法
while (<條件>) { |
直到EOF
如果有在寫online judge的題目的話應該有看過一句話叫做
輸入直到EOF
那什麼是輸入直到EOF?
EOF (End of File) 表示檔案結尾,在許多不確定輸入資料數的題型中可以看到。
在C語言,我們會利用
int n; |
來實作。他的意思是只要沒有碰到EOF,我就持續讀這個整數變數 n 並執行迴圈內的程式。
當我寫出
while (scanf("%d", &n) != EOF) |
就表示只要我的 scanf() 函數回傳的不是 EOF,我就一直執行迴圈內的內容。
do-while迴圈
do-while迴圈長得跟while迴圈很像,語法如下:
do { |
注意!別忘了分號!
而 do-while 迴圈跟 while 迴圈最大的差別是,do-while 迴圈會先執行程式才去檢查條件來決定是否再執行一次迴圈。
回到薛西弗斯
上面我們提到薛西弗斯必須永無止境的推石頭,如果從程式的角度來看,我想這更像是無限迴圈的行為(?
而我們可以不必讓我們的程式重複同一件事直到天荒地老!只要設定正確的條件式,就能事半功倍,我們不僅不用自己重複做枯燥乏味的相同的動作,也不用擔心迴圈會無限執行到世界毀滅的那天!
結語
以上就是C語言迴圈簡介。
倘內容有誤或仍有疑問,歡迎在下方留言區留言!