C++入門教程(9):while 語句

小古銀發表於2019-05-10

小古銀的官方網站(完整教程):http://www.xiaoguyin.com/
C++入門教程視訊:https://www.bilibili.com/vide…


接下來講解的是迴圈的兩條語句whilefor,當我們需要用到迴圈的時候,這兩種迴圈語句都是可以使用的,可以從這兩種裡選擇一種來使用。而它們的選擇依據是:哪個更容易表達出邏輯就用哪個,至於怎樣才能看出哪個更容易,這就需要這兩種都寫一次然後進行對比,直到熟練後就可以靈活選擇了。接下來就是講解這兩種迴圈語句,而講解過程中會有兩個例子,分別用這兩種迴圈語句去實現程式碼,在看例子的程式碼前,可以自己畫出流程圖,再看例子的程式碼,這樣可以加深理解。

while 語句

while的條件是true時,將一直執行{}中的程式碼,直到條件變成false

while (true或者false)
{
    // 執行程式碼
} // 執行到這裡會跳回上面的 while (true或者false) 重新判斷

基礎示例 1

問題1:輸入5個整數數值,然後求這5個數的和。

#include <iostream> // std::cin std::cout std::endl

int main(void)
{
    int sum = 0; // 用於儲存所有數的和
    int count = 0; // 用於記錄輸入了幾個數值

    // 當輸入的數值小於5個時迴圈
    // 達到5個數值時就不再執行
    while (count < 5)
    {
        // 宣告變數用於儲存輸入的數值
        int value = 0;
        std::cin >> value;

        // 每次新輸入的數值都加到前面數值的總和裡面
        sum = sum + value;

        // 輸入數值的數量增加1個
        count = count + 1;
    } // 執行到這裡會跳回上面的 while (count < 5) 重新判斷

    // 輸出綜合
    std::cout << "5個數值的總和是:" << sum << std::endl;

    return 0;
}

基礎講解 1

變數count用於記錄輸入數值的數量,由於初始時沒有輸入數值,所以初始化為0。當每次輸入一個數值之後,count都會+1,當count達到5時,也就是說已經輸入了5個數值的時候,此時因為while的條件不成立而跳出迴圈,然後輸出變數sum的值。

而變數sum用於儲存5個數值的總和,由於初始時沒有輸入數值,所以初始化為0。在每次迴圈中都加上新輸入的數值,這樣就將5個數值加在一起,從而得出這5個數值的總和。

變數value只用於每次迴圈的時候暫存輸入的數值,所以將它的作用域限制在while語句的{}之間,也就是將變數value的範圍限制在最小的範圍內。值得注意的是:由於變數value是在while語句的{}裡面,當離開這個}時它就會消失,所以在每次迴圈中,變數value都是重新建立的新變數。

基礎示例 2

問題2:迴圈輸入一個整數數值然後再輸出這個整數數值,當輸入的數值是0時退出迴圈,但不輸出這個0。

#include <iostream> // std::cin std::cout std::endl

int main(void)
{
    // 宣告變數value用於儲存輸入的數值
    int value = 0;
    std::cin >> value;

    // 當輸入的數值是0則退出迴圈
    while (value != 0)
    {
        // 輸出前面輸入的數值
        std::cout << "你輸入的是:" << value << std::endl;

        // 儲存輸入的數值
        std::cin >> value;
    } // 執行到這裡會跳回上面的 while (value != 0) 重新判斷

    return 0;
}

基礎講解 2

變數value用於每次迴圈的時候暫存輸入的數值。它不在while語句裡面的原因是:由於while要用到value,所以value要放到while的前面。

先宣告一個變數value,然後儲存第一次輸入的數值,然後判斷這個數值是否為0。當這個數值不是0的時候執行{}內的程式碼,由於剛才已經輸入了一個數值,所以就需要輸出這個數值,然後儲存輸入的數值,接著再重新判斷新輸入的數值是否為0。

鞏固練習(用 while 語句實現)

  1. 輸入n個小數,求它們的最小值、最大值和平均值。首先輸入一個正整數n,代表後面要輸入n個小數,然後輸入n個小數,當輸入完成後,輸出它們的最小值、最大值和平均值。
  2. 輸入若干個整數數值,求它們的最小值、最大值和平均值。迴圈輸入整數數值直到輸入數值0,當輸入完成後,輸出它們的最小值、最大值和平均值。
  3. 輸出1*1 + 2*2 + 3*3 + ... + 100*100的結果。
  4. 輸出2^0 + 2^1 + 2^2 + ... + 2^63的結果。
  5. 輸出1! + 2! + 3! + ... + 10!的結果。
  6. 輸出1 + 1/1! + 1/2! + 1/3! + ...的結果。
  7. 求π的值。提示π/4 = 1 - 1/3 + 1/5 - 1/7 + ...的結果。
  8. 輸入5個數,統計其中正數、負數和0的個數。
  9. 輸入若干個整數數值,求其中的奇數之和與偶數之和。迴圈輸入整數數值直到輸入數值0,當輸入完成後,輸出它們的奇數之和與偶數之和。
  10. 輸入一個小數x和一個整數y,求x的y次方。(x是正數,y包括正數負數和0)
  11. 求水仙花數(一個三位數,其各位數字立方和等於該數字本身)。
  12. 求斐波那契數列的第n項。斐波那契數列定義:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*),求第n項的值。
  13. 輸入一個整數,輸出這個整數的各數字反序的數值。如輸入123456就輸出654321
  14. 輸入一個整數,輸出這個整數的各位數之和。如輸入12345就輸出15
  15. 輸出1000以內所有素數(素數定義:一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做素數或者質數)。
  16. 輸出九九乘法表。

相關文章