高一課程C語言>do-while迴圈


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());


一個小小的改變,就可以使程式更為簡潔,邏輯上也較為清楚。