![]() |
C 教材:while |
我們現在用 while 語法重寫 f2c-straight.c。
#include <stdio.h> /* 將華氏 30:5:100 換算對應的攝氏溫度 (f2c-while.c) */ main() { double fahr=30; while(fahr <= 100) { printf("%3.0f\t%4.1f\n", fahr, 5*(fahr-32)/9); fahr = fahr + 5; } }
讓我們先介紹 while 語法:
其中 CONDITION 是一個邏輯計算語句, STATEMENTS_ 是一些指令。 while 的流程控制如下:while (CONDITION) STATEMENTS_
(1) 執行 CONDITIONSTATEMENTS_ 有三種狀況:
(2) 若 (1) 的結果是 True,做 (3),否則做 (4)
(3) 執行 STATEMENTS_ ,完了以後做 (1)
(4) 執行 STATEMENTS_ 的下一個指令,恢復正常流程
f2c-while.c 裡面看到的是第三種狀況。
沒有指令 只要寫個分號 ; 就可以 只有一個指令 就寫一個指令 超過一個指令 將這些指令依序寫下,並在其前後寫一對 { }。
寫程式的人,要自行負責在 STATEMENTS_ 裡面適當地改變 CONDITION 的結果。否則 CONDITION 可能永遠是 True, 導至這個 while 會永遠執行下去。 稱為「無窮迴圈」(infinite loop)。
注意,無論 STATEMENTS_ 裡面有幾個指令, 都被當做是 while 語法結構內部的指令。 就 C 而言,整個 while (CONDITION) STATEMENTS_ 被當做 main() 裡面的一個指令。 就好像一個英文句子當中,可以有許多的子句一樣。 整個 while 是一個句子,STATEMENTS_ 是這個句子裡面的子句。
根據一般程式語言的術語,一個 while 指令,又稱為一個 while 迴圈 (while-loop)。
而且,我們看到了
fahr = fahr + 5;這種指令。我們已經在前面警告過讀者,C 的 = 符號是「指派」或「定義」的意思, 不同於數學的 = 符號,不要將它誤以為是 0 = 5 的意思。
習題
#include <stdio.h> main() { int n=0; while (n <= 10) { printf("hello, world\n"); n = n*2; } }
![]() |
![]() |
單維彰 (2000/03/24) --- 00/06/17 (單) |