小古銀的官方網(wǎng)站(完整教程):http://www.xiaoguyin.com/
C++入門教程視頻:https://www.bilibili.com/video/av20868986/
接下來講解的是循環(huán)的兩條語句while
和for
咖为,當(dāng)我們需要用到循環(huán)的時(shí)候傀广,這兩種循環(huán)語句都是可以使用的,可以從這兩種里選擇一種來使用命雀。而它們的選擇依據(jù)是:哪個(gè)更容易表達(dá)出邏輯就用哪個(gè)沼沈,至于怎樣才能看出哪個(gè)更容易硝烂,這就需要這兩種都寫一次然后進(jìn)行對(duì)比奔脐,直到熟練后就可以靈活選擇了测萎。接下來就是講解這兩種循環(huán)語句闹伪,而講解過程中會(huì)有兩個(gè)例子沪铭,分別用這兩種循環(huán)語句去實(shí)現(xiàn)代碼,在看例子的代碼前祭往,可以自己畫出流程圖伦意,再看例子的代碼,這樣可以加深理解硼补。
while 語句
當(dāng)while
的條件是true
時(shí)驮肉,將一直執(zhí)行{}
中的代碼,直到條件變成false
已骇。
while (true或者false)
{
// 執(zhí)行代碼
} // 執(zhí)行到這里會(huì)跳回上面的 while (true或者false) 重新判斷
基礎(chǔ)示例 1
問題1:輸入5個(gè)整數(shù)數(shù)值离钝,然后求這5個(gè)數(shù)的和。
#include <iostream> // std::cin std::cout std::endl
int main(void)
{
int sum = 0; // 用于保存所有數(shù)的和
int count = 0; // 用于記錄輸入了幾個(gè)數(shù)值
// 當(dāng)輸入的數(shù)值小于5個(gè)時(shí)循環(huán)
// 達(dá)到5個(gè)數(shù)值時(shí)就不再執(zhí)行
while (count < 5)
{
// 聲明變量用于保存輸入的數(shù)值
int value = 0;
std::cin >> value;
// 每次新輸入的數(shù)值都加到前面數(shù)值的總和里面
sum = sum + value;
// 輸入數(shù)值的數(shù)量增加1個(gè)
count = count + 1;
} // 執(zhí)行到這里會(huì)跳回上面的 while (count < 5) 重新判斷
// 輸出綜合
std::cout << "5個(gè)數(shù)值的總和是:" << sum << std::endl;
return 0;
}
基礎(chǔ)講解 1
變量count
用于記錄輸入數(shù)值的數(shù)量褪储,由于初始時(shí)沒有輸入數(shù)值卵渴,所以初始化為0。當(dāng)每次輸入一個(gè)數(shù)值之后鲤竹,count
都會(huì)+1
浪读,當(dāng)count
達(dá)到5時(shí),也就是說已經(jīng)輸入了5個(gè)數(shù)值的時(shí)候,此時(shí)因?yàn)?code>while的條件不成立而跳出循環(huán)碘橘,然后輸出變量sum
的值互订。
而變量sum
用于保存5個(gè)數(shù)值的總和,由于初始時(shí)沒有輸入數(shù)值痘拆,所以初始化為0仰禽。在每次循環(huán)中都加上新輸入的數(shù)值,這樣就將5個(gè)數(shù)值加在一起纺蛆,從而得出這5個(gè)數(shù)值的總和吐葵。
變量value
只用于每次循環(huán)的時(shí)候暫存輸入的數(shù)值,所以將它的作用域限制在while
語句的{}
之間桥氏,也就是將變量value
的范圍限制在最小的范圍內(nèi)温峭。值得注意的是:由于變量value
是在while
語句的{}
里面,當(dāng)離開這個(gè)}
時(shí)它就會(huì)消失识颊,所以在每次循環(huán)中诚镰,變量value
都是重新創(chuàng)建的新變量奕坟。
基礎(chǔ)示例 2
問題2:循環(huán)輸入一個(gè)整數(shù)數(shù)值然后再輸出這個(gè)整數(shù)數(shù)值祥款,當(dāng)輸入的數(shù)值是0時(shí)退出循環(huán),但不輸出這個(gè)0月杉。
#include <iostream> // std::cin std::cout std::endl
int main(void)
{
// 聲明變量value用于保存輸入的數(shù)值
int value = 0;
std::cin >> value;
// 當(dāng)輸入的數(shù)值是0則退出循環(huán)
while (value != 0)
{
// 輸出前面輸入的數(shù)值
std::cout << "你輸入的是:" << value << std::endl;
// 保存輸入的數(shù)值
std::cin >> value;
} // 執(zhí)行到這里會(huì)跳回上面的 while (value != 0) 重新判斷
return 0;
}
基礎(chǔ)講解 2
變量value
用于每次循環(huán)的時(shí)候暫存輸入的數(shù)值刃跛。它不在while
語句里面的原因是:由于while
要用到value
,所以value
要放到while
的前面苛萎。
先聲明一個(gè)變量value
桨昙,然后保存第一次輸入的數(shù)值,然后判斷這個(gè)數(shù)值是否為0腌歉。當(dāng)這個(gè)數(shù)值不是0的時(shí)候執(zhí)行{}
內(nèi)的代碼蛙酪,由于剛才已經(jīng)輸入了一個(gè)數(shù)值,所以就需要輸出這個(gè)數(shù)值翘盖,然后保存輸入的數(shù)值桂塞,接著再重新判斷新輸入的數(shù)值是否為0。
鞏固練習(xí)(用 while 語句實(shí)現(xiàn))
- 輸入n個(gè)小數(shù)馍驯,求它們的最小值阁危、最大值和平均值。首先輸入一個(gè)正整數(shù)n汰瘫,代表后面要輸入n個(gè)小數(shù)狂打,然后輸入n個(gè)小數(shù),當(dāng)輸入完成后混弥,輸出它們的最小值趴乡、最大值和平均值。
- 輸入若干個(gè)整數(shù)數(shù)值,求它們的最小值晾捏、最大值和平均值官辽。循環(huán)輸入整數(shù)數(shù)值直到輸入數(shù)值0,當(dāng)輸入完成后粟瞬,輸出它們的最小值同仆、最大值和平均值。
- 輸出
1*1 + 2*2 + 3*3 + ... + 100*100
的結(jié)果裙品。 - 輸出
2^0 + 2^1 + 2^2 + ... + 2^63
的結(jié)果俗批。 - 輸出
1! + 2! + 3! + ... + 10!
的結(jié)果。 - 輸出
1 + 1/1! + 1/2! + 1/3! + ...
的結(jié)果市怎。 - 求π的值岁忘。提示
π/4 = 1 - 1/3 + 1/5 - 1/7 + ...
的結(jié)果。 - 輸入5個(gè)數(shù)区匠,統(tǒng)計(jì)其中正數(shù)干像、負(fù)數(shù)和0的個(gè)數(shù)。
- 輸入若干個(gè)整數(shù)數(shù)值驰弄,求其中的奇數(shù)之和與偶數(shù)之和麻汰。循環(huán)輸入整數(shù)數(shù)值直到輸入數(shù)值0,當(dāng)輸入完成后戚篙,輸出它們的奇數(shù)之和與偶數(shù)之和五鲫。
- 輸入一個(gè)小數(shù)
x
和一個(gè)整數(shù)y
,求x的y次方岔擂。(x
是正數(shù)位喂,y
包括正數(shù)負(fù)數(shù)和0) - 求水仙花數(shù)(一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)字本身)乱灵。
- 求斐波那契數(shù)列的第n項(xiàng)塑崖。斐波那契數(shù)列定義:F(0)=0,F(xiàn)(1)=1, F(n)=F(n-1)+F(n-2)(n>=2痛倚,n∈N*)规婆,求第n項(xiàng)的值。
- 輸入一個(gè)整數(shù)状原,輸出這個(gè)整數(shù)的各數(shù)字反序的數(shù)值聋呢。如輸入
123456
就輸出654321
。 - 輸入一個(gè)整數(shù)颠区,輸出這個(gè)整數(shù)的各位數(shù)之和削锰。如輸入
12345
就輸出15
。 - 輸出1000以內(nèi)所有素?cái)?shù)(素?cái)?shù)定義:一個(gè)大于1的自然數(shù)毕莱,除了1和它自身外器贩,不能被其他自然數(shù)整除的數(shù)叫做素?cái)?shù)或者質(zhì)數(shù))颅夺。
- 輸出九九乘法表。