小古銀的官方網站(完整教程):http://www.xiaoguyin.com/
C++入門教程視訊:https://www.bilibili.com/vide…
接下來講解的是迴圈的兩條語句while
和for
,當我們需要用到迴圈的時候,這兩種迴圈語句都是可以使用的,可以從這兩種裡選擇一種來使用。而它們的選擇依據是:哪個更容易表達出邏輯就用哪個,至於怎樣才能看出哪個更容易,這就需要這兩種都寫一次然後進行對比,直到熟練後就可以靈活選擇了。接下來就是講解這兩種迴圈語句,而講解過程中會有兩個例子,分別用這兩種迴圈語句去實現程式碼,在看例子的程式碼前,可以自己畫出流程圖,再看例子的程式碼,這樣可以加深理解。
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 語句實現)
- 輸入n個小數,求它們的最小值、最大值和平均值。首先輸入一個正整數n,代表後面要輸入n個小數,然後輸入n個小數,當輸入完成後,輸出它們的最小值、最大值和平均值。
- 輸入若干個整數數值,求它們的最小值、最大值和平均值。迴圈輸入整數數值直到輸入數值0,當輸入完成後,輸出它們的最小值、最大值和平均值。
- 輸出
1*1 + 2*2 + 3*3 + ... + 100*100
的結果。 - 輸出
2^0 + 2^1 + 2^2 + ... + 2^63
的結果。 - 輸出
1! + 2! + 3! + ... + 10!
的結果。 - 輸出
1 + 1/1! + 1/2! + 1/3! + ...
的結果。 - 求π的值。提示
π/4 = 1 - 1/3 + 1/5 - 1/7 + ...
的結果。 - 輸入5個數,統計其中正數、負數和0的個數。
- 輸入若干個整數數值,求其中的奇數之和與偶數之和。迴圈輸入整數數值直到輸入數值0,當輸入完成後,輸出它們的奇數之和與偶數之和。
- 輸入一個小數
x
和一個整數y
,求x的y次方。(x
是正數,y
包括正數負數和0) - 求水仙花數(一個三位數,其各位數字立方和等於該數字本身)。
- 求斐波那契數列的第n項。斐波那契數列定義:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*),求第n項的值。
- 輸入一個整數,輸出這個整數的各數字反序的數值。如輸入
123456
就輸出654321
。 - 輸入一個整數,輸出這個整數的各位數之和。如輸入
12345
就輸出15
。 - 輸出1000以內所有素數(素數定義:一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做素數或者質數)。
- 輸出九九乘法表。