【語法篇】4、for循環(huán)(一)

一辆亏、循環(huán)

大部分人孩提時(shí)的數(shù)學(xué)啟蒙都是從數(shù)數(shù)開始的风秤,如果要我們編程讓計(jì)算機(jī)從1數(shù)到10,我們用輸出來替代數(shù)數(shù)扮叨,即是要將1到10依次打印出來缤弦,我們可以怎么實(shí)現(xiàn)呢?這當(dāng)然很簡(jiǎn)單了彻磁,我們最直接樸素的方法碍沐,就是逐個(gè)將這些數(shù)打印出就可以了狸捅。

#include <iostream>
using namespace std;
int main(){
    cout << "1" << endl;
    cout << "2" << endl;
    cout << "3" << endl;
    cout << "4" << endl;
    cout << "5" << endl;
    cout << "6" << endl;
    cout << "7" << endl;
    cout << "8" << endl;
    cout << "9" << endl;
    cout << "10" << endl;
    return 0;
}

這肯定難不倒大家,可是如果我們要計(jì)算機(jī)從1數(shù)到100呢累提?從1數(shù)到10000呢尘喝?從10000到100000000呢?隨著數(shù)據(jù)規(guī)模的急劇增大刻恭,我們不難想象瞧省,逐個(gè)地將這些數(shù)cout輸出是一件多人令人難受的事情扯夭。
但是我們用另外一個(gè)角度來考慮一下問題鳍贾,計(jì)算機(jī)不是很擅長(zhǎng)做這種機(jī)械、又很有規(guī)律的事情嗎交洗?為什么我們不能將這種機(jī)械骑科、重復(fù)的事情,用某種方式去實(shí)現(xiàn)呢构拳?編程語言設(shè)計(jì)人員也充分考慮到了這樣的問題咆爽,因此他們?cè)O(shè)計(jì)了一種叫做『循壞結(jié)構(gòu)』的東西,循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)置森、順序結(jié)構(gòu)一樣都普遍存在不同的編程語言中斗埂,它們的思想和作用都是一樣的,區(qū)別僅僅在于語法的表達(dá)不同而已凫海。

二呛凶、for循壞

以下代碼,我們可能暫時(shí)還不太理解行贪,不妨先看看漾稀,再通過幾個(gè)案例進(jìn)行模仿,慢慢我們就能抓住它的規(guī)律建瘫。

1~10
#include <iostream>
using namespace std;
int main(){  // 從1到10 
    for(int i=1; i<=10; i++){ 
        cout << i << endl;
    }
    return 0;
}

代碼的關(guān)鍵在于for(int i=1; i<=10; i++)這一句崭捍。我們首先要來解釋一下i++是什么意思,i++其實(shí)就是相當(dāng)于是i=i+1啰脚。

既然有i++殷蛇,且i++相當(dāng)于i=i+1,那么有沒有對(duì)應(yīng)的+、-橄浓、* 粒梦、/呢?
類似于上面的做法贮配,我們可以大膽猜測(cè)一下:
i -- 相當(dāng)于 i = i - 1
i ** 相當(dāng)于 i = i * 1
i // 相當(dāng)于 i = i / 1
等一下谍倦, i乘以1和i除以1,不都是它本身嗎泪勒?那這本身就沒有意義了昼蛀,所以在并不存在『 i**』和『i//』宴猾,并且『//』代表的是注釋,只存在i++與i--叼旋。

另外除了 i++仇哆、i--,還有一種++i、--i夫植,他們的意思也是『自加1』和『自減1』讹剔,i++與++i,i--與--i详民,本身代表的意思都是i = i + 1 和 i = i - 1嘀略,但是還是有一點(diǎn)點(diǎn)區(qū)別洼哎,大家不妨自己去探究一下區(qū)別在哪里。
還有另外一種寫法 i += 2 ,這也是一種簡(jiǎn)寫饥瓷,實(shí)際上相當(dāng)于 i = i+2颂碧,其他運(yùn)算也是可以這樣簡(jiǎn)寫窟却,譬如 i = i/2剖笙,可以簡(jiǎn)寫成 i /= 2,包括求余%也可以這樣簡(jiǎn)寫涧窒。簡(jiǎn)寫的目的只是為了少寫點(diǎn)心肪,方便我們書寫得更高效,本質(zhì)上和全寫并沒有優(yōu)劣之分纠吴,我們習(xí)慣如何書寫都沒有問題硬鞍。

理解了上面的問題,我們?cè)侔涯抗饧械絝or語句中呜象,如果我們需要從1開始膳凝,數(shù)到100呢?如果是其他呢恭陡?

從1到10蹬音,每次增加1: for(int i=1; i<=10; i++)
從1到100,每次增加1:for(int i=1; i<=100; i++)
從10到1休玩,每次減少1:for(int i=10; i>=1; i--)
從1到100著淆,每次增加5:for(int i=1; i<=100; i+=5)
從50到0,每次減少2:for(int i=50; i>=0; i-=2)

相信大家通過上面的案例拴疤,可以大致得出這個(gè)循環(huán)(for循環(huán))的規(guī)律永部,我們不妨一起來總結(jié)一下。

特別需要大家注意的是:小括號(hào)里面有兩個(gè)分號(hào)呐矾,小括號(hào)后面沒有分號(hào)苔埋,大括號(hào)后面不需要分號(hào),循環(huán)體里面可以有多個(gè)語句蜒犯,每個(gè)語句后面都需要有結(jié)束語句的分號(hào)组橄。

循環(huán)結(jié)構(gòu)

for循環(huán)結(jié)構(gòu)的運(yùn)行思路是這樣的:我們先假定for循環(huán)里面的語句荞膘,分別是A、B玉工、C羽资,循環(huán)體語句是D。那么首先運(yùn)行A遵班,即初始化條件屠升;接著判斷B,即條件語句狭郑,如果是true腹暖,那么運(yùn)行循環(huán)體D,否則跳出循環(huán)愿阐;剛才如果運(yùn)行了循環(huán)體D微服,接著會(huì)運(yùn)行C,即變化語句缨历,變化完后再進(jìn)行判斷B,如果是true糙麦,運(yùn)行D辛孵,否則跳出循環(huán),一直重復(fù)赡磅,直到B為false魄缚,跳出循環(huán)。


運(yùn)行順序

三焚廊、累加器和累乘器

1冶匹、累加器

前面我們嘗試著讓計(jì)算機(jī)輸出1~100,現(xiàn)在我們不妨讓計(jì)算機(jī)將1~100累加起來咆瘟。即求:1+2+3+...+99+100的結(jié)果嚼隘。

如果我們想象一下,有一條『貪吃蛇』袒餐,一開始是一個(gè)點(diǎn)飞蛹,吃完一個(gè)數(shù),那個(gè)數(shù)又變成了它自身的一部分灸眼,又繼續(xù)吃下一個(gè)數(shù)卧檐,直到吃完所有數(shù)。那么我們可以假定一個(gè)變量sum(蛇)焰宣,給它賦一個(gè)初始值霉囚,即開始是一個(gè)點(diǎn)。因?yàn)槭抢奂迂盎跏贾祽?yīng)該不影響最終的結(jié)果盈罐,那么初始值應(yīng)該設(shè)為0逻澳,因?yàn)?加任何數(shù)都等于它本身。那么我們就會(huì)有以下式子暖呕。

sum = sum + 1;
sum = sum + 2;
sum = sum + 3;
...
sum = sum + i;
...
sum = sum + 100;

那么其實(shí) sum = sum + i斜做,就是剛才一直在反復(fù)做的事情,變化的是i的數(shù)值湾揽,它們的值是從1~100瓤逼,每次變化為增加1。

#include <iostream>
using namespace std;
int main(){
    int sum = 0;  //初始化 
    for(int i=1; i<=100; i++){ 
        sum = sum + i;
    }
    cout << sum;  // 最后輸出結(jié)果 
    return 0;
}

2库物、累乘器

數(shù)學(xué)中有一個(gè)階乘的計(jì)算霸旗,我們用『!』來表示戚揭。如4诱告!=1×2×3×4,6民晒!=1×2×3×4×5×6精居,n!=1×2×3×...×(n-1)×n。現(xiàn)在輸入一個(gè)整數(shù)n(n<20)潜必,求n!靴姿。

很顯然,也可以同樣參照上面的『貪吃蛇』做法磁滚,只是初始化應(yīng)該為1佛吓,因?yàn)?乘以任何數(shù)都還是它本身。另外需要注意的是垂攘,20维雇!顯然是一個(gè)比較大的數(shù),明顯已經(jīng)超出了int的范圍(-21億多<int<21億多)晒他,因此我們需要使用更大范圍的long long吱型。當(dāng)然如果n的數(shù)據(jù)更大,可能也會(huì)超過long long 的范圍仪芒,那么這個(gè)就需要用到『高精度計(jì)算』唁影,我們后面會(huì)再提到,現(xiàn)在大家只需要知道就可以了掂名。

#include <iostream>
using namespace std;
int main(){
    int n;
    cin >> n; 
    int s = 1;  //初始化 
    for(int i=1; i<=n; i++){ 
        s = s * i;
    }
    cout << s;  // 最后輸出結(jié)果 
    return 0;
}

四据沈、練習(xí)

1、編程計(jì)算12+22+32+……+1002

2饺蔑、編程計(jì)算并輸出1+1/2+1/3+……+1/100的和

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锌介,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌孔祸,老刑警劉巖隆敢,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異崔慧,居然都是意外死亡拂蝎,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門惶室,熙熙樓的掌柜王于貴愁眉苦臉地迎上來温自,“玉大人,你說我怎么就攤上這事皇钞〉棵冢” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵夹界,是天一觀的道長(zhǎng)馆里。 經(jīng)常有香客問我,道長(zhǎng)可柿,這世上最難降的妖魔是什么鸠踪? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮趾痘,結(jié)果婚禮上慢哈,老公的妹妹穿的比我還像新娘。我一直安慰自己永票,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布滥沫。 她就那樣靜靜地躺著侣集,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兰绣。 梳的紋絲不亂的頭發(fā)上世分,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音缀辩,去河邊找鬼臭埋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛臀玄,可吹牛的內(nèi)容都是我干的瓢阴。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼健无,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼荣恐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤叠穆,失蹤者是張志新(化名)和其女友劉穎少漆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體硼被,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡示损,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嚷硫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片检访。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖论巍,靈堂內(nèi)的尸體忽然破棺而出烛谊,到底是詐尸還是另有隱情,我是刑警寧澤嘉汰,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布丹禀,位于F島的核電站,受9級(jí)特大地震影響鞋怀,放射性物質(zhì)發(fā)生泄漏双泪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一密似、第九天 我趴在偏房一處隱蔽的房頂上張望焙矛。 院中可真熱鬧,春花似錦残腌、人聲如沸村斟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蟆盹。三九已至,卻和暖如春闺金,著一層夾襖步出監(jiān)牢的瞬間逾滥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國打工败匹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寨昙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓掀亩,卻偏偏與公主長(zhǎng)得像舔哪,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子归榕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容