do-while迴圈
do {
陳述句一;
陳述句二;
....
} while(條件式);
它的執行過程如下:
1) 先執行迴圈內容1。 2) 判斷調件式成立與否?如果成立就再一次執行迴圈內容。不成立,就離開do-while迴圈,執行下面的一個語句。 其執行過程可用右圖表示。 |
while迴圈稱之為「前測式迴圈」,因為它在迴圈執行前就會進行條件判斷,而do while稱之「後測式迴圈」,它會先執行迴圈本體,然後再進行條件判斷,do while的語法如下所示:
注意while後面是以分號(;)作為結束,這個很常被忽略;由於do while會先執行迴圈,所以它通常用於進行一些初始化或介面溝通的動作,例如下面這個程式:
#include <stdio.h>
int main(void) {
int input = 0;
int replay = 0;
do {
printf("輸入整數值:");
scanf("&d", &input);
getchar();
printf("輸入數為奇數?%c\n", ((input % 2) ? 'Y': 'N'));
printf("繼續(1:繼續 0:結束)?");
scanf("%d", &replay);
getchar();
} while(replay);
return 0;
}
如果您日後學會函式的使用,您還可以將這個迴圈寫的更漂亮一些,而不用使用replay變數,例如若下面more()函式詢問使用者是否繼續,如果是會傳 回1,否則傳回0:
do {
printf("輸入整數值:");
scanf("%d", &input);
printf("輸入數為奇數?%c\n", ((input % 2) ? 'Y': 'N'));
} while(more());
一個小小的改變,就可以使程式更為簡潔,邏輯上也較為清楚。