while迴圈,C語言while迴圈詳解

2020-07-16 10:04:22
前面章節介紹了 for 迴圈,本節再學習 while 迴圈就容易很多,因為它們的思想是一樣的,只是在結構和執行順序上有所不同。

while的執行順序

while 迴圈的執行順序非常簡單,它的格式是:

while (表示式)
{
        語句;
}

當表示式為真,則執行下面的語句;語句執行完之後再判斷表示式是否為真,如果為真,再次執行下面的語句;然後再判斷表示式是否為真……就這樣一直迴圈下去,直到表示式為假,跳出迴圈。這個就是 while 的執行順序。

注意,初學者程式設計時,if、else、for、while、do 後面的執行語句不論有多少行,就算只有一行也要加“{}”,養成良好的程式設計習慣尤為重要。

下面寫一個程式實現此功能:計算 (1-1/3+1/5-1/7+1/9-1/11…)*4 的值。
# include <stdio.h>
int main(void)
{
    int i = 1;
    int j = 1;
    double sum = 0;  //結果肯定是小數, 所以要定義成double或float型
    while (1.0/i > 1e-6)  /*當1/i小於10的-6次方時停止迴圈。這個迴圈條件是自己定的, 定得越小最後的結果就越精確。注意1一定要寫成小數的形式即1.0*/
    {
        sum += (1.0 / i) * j;
        i+=2;
        j = -j;  //實現正負交替
    }
    sum *=4;
    printf("sum = %lfn", sum);  //double是%lf, 取6位小數是%.6
    return 0;
}
輸出結果是:
sum = 3.141591

while和for的比較

前面用 for 迴圈寫過計算 1+2+3+4+…+100 之和的程式,下面用 while 程式設計實現同樣的功能:
# include <stdio.h>
int main(void)
{
    int i = 1;
    int sum = 0;
    while (i <= 100)
    {
        sum = sum +i;
        ++i;
    }
    printf("sum = %dn", sum);
    return 0;
}
輸出結果是:
sum = 5050

它與用 for 編寫的那個程式是完全等價的。再來看一下 for 迴圈的格式:

for (表示式1;表示式2;表示式3)

在 for 迴圈的格式中,表示式 1、表示式 2 和表示式 3 在 while 迴圈中一個也不少,只不過不像 for 迴圈那樣寫在一起,而是分開寫。在 while 迴圈中,迴圈變數 i 在定義的時候就給它賦初值,++i 則是寫在 while 的迴圈體內。只有迴圈判斷表示式與 for 一樣,都是寫在其後的括號中。

那麼,是不是所有的 for 迴圈都可以轉化成 while 迴圈?答案是“Yes”!不僅如此,所有的 while 迴圈也都可以轉化成 for 迴圈,for 迴圈和 while 迴圈可以相互轉換。

當程式中需要用到回圈結構時,for 迴圈和 while 迴圈都可以使用,具體如何選擇要根據實際情況分析。比如死迴圈往往就是用 while(1),這樣更方便!