2018-09-04循環(huán)

C語言中的循環(huán)

其特點(diǎn)是,在給定條件成立時(shí),反復(fù)執(zhí)行某程序段, 直到條件不成立為止夯巷。
給定的條件稱為"循環(huán)條件",反復(fù)執(zhí)行的程序段稱為"循環(huán)體"
  • 循環(huán)分為三種循環(huán)

while循環(huán),do...while循環(huán),for循環(huán).三種都是能實(shí)現(xiàn)共同的功能,不同的方法有不同的用法每種都需要掌握.

例如()int a = 1; while(a > 3){ printf("我是a"); a++; }()
這段代碼就是證明了我的說法,我一開始定義一個(gè)a值為1,然后走到while循環(huán)()里僅需判斷a是否大于3,不大于就開始執(zhí)行輸出語句,然后a++,a就變成了2,繼續(xù)走到while循環(huán)的()進(jìn)行判斷2還是不大于3繼續(xù)執(zhí)行輸出語句,直到條件不成立了這個(gè)循環(huán)也就結(jié)束了

執(zhí)行流程:1.首先會判定"循環(huán)控制條件"是否為真, 如果為假直接跳到循環(huán)語句后面
2.如果"循環(huán)控制條件"為真, 執(zhí)行一次循環(huán)體, 然后再次判斷"循環(huán)控制條件"是否為真, 為真繼續(xù)執(zhí)行循環(huán)體,為假跳出循環(huán)
3.重復(fù)以上操作, 直到"循環(huán)控制條件"為假為止

while循環(huán)注意點(diǎn)

  • 任何數(shù)值都有真假性--> () while (1) { // 死循環(huán) printf("發(fā)射子彈~嗶嗶嗶嗶\n"); // 沒有能夠讓循環(huán)結(jié)束的語句 }()
  • 上面就是一個(gè)死循環(huán),while里面的判斷是1,表示永遠(yuǎn)為真,然后就會一直執(zhí)行里面的語句不會停止
  • 當(dāng)while后面只有一條語句時(shí),while后面的大括號可以省略
    ()int a = 1;while(a < 3)printf("我是a");()
    如果while省略了大括號, 那么后面不能定義變量
    C語言中分號(;)也是一條語句, 稱之為空語句

do...while循環(huán)

  • 先執(zhí)行程序在進(jìn)行判斷,一般while能做到的do...while也能做到,do...while能做到的,while也能做到;

do{
printf("我是先執(zhí)行的")
}while(判斷的條件是否要進(jìn)行循環(huán));
這就是do...while語句的基本結(jié)構(gòu)

do-while循環(huán)執(zhí)行流程
1.首先不管while中的條件是否成立, 都會執(zhí)行一次"循環(huán)體"
2.執(zhí)行完一次循環(huán)體,接著再次判斷while中的條件是否為真, 為真繼續(xù)執(zhí)行循環(huán)體,為假跳出循環(huán)
3.重復(fù)以上操作, 直到"循環(huán)控制條件"為假為止

while和dowhile應(yīng)用場景
絕大多數(shù)情況下while和dowhile可以互換, 所以能用while就用while
無論如何都需要先執(zhí)行一次循環(huán)體的情況, 才使用dowhile
do while 曾一度提議廢除,但是他在輸入性檢查方面還是有點(diǎn)用的


for循環(huán)

  • for循環(huán)是所有循環(huán)里面用的最多的,也是最好用的一個(gè),企業(yè)開發(fā)中一般能用for循環(huán)就盡量用for循環(huán)
    ()for(初始化表達(dá)式;循環(huán)條件表達(dá)式;循環(huán)后的操作表達(dá)式){循環(huán)體中的語句;}()

例如:for(int a = 1;a < 3;a ++){printf("a");}初始化一個(gè)表達(dá)式a等于1,然后進(jìn)行循環(huán)條件判斷,1小于3是對的然后進(jìn)行輸出,輸出完后執(zhí)行循環(huán)后的表達(dá)式,然后在進(jìn)行判斷a是否小于3如果小于就繼續(xù)執(zhí)行,直到哪次條件不滿足了就不會輸出了

  • for循環(huán)執(zhí)行流程
  • 首先執(zhí)行"初始化表達(dá)式"恐锦,而且在整個(gè)循環(huán)過程中,只會執(zhí)行一次初始化表達(dá)式
    接著判斷"循環(huán)條件表達(dá)式"是否為真贤牛,為真執(zhí)行循環(huán)體中的語句
    循環(huán)體執(zhí)行完畢后,接下來會執(zhí)行"循環(huán)后的操作表達(dá)式"沽翔,然后再次判斷條件是否為真,為真繼續(xù)執(zhí)行循環(huán)體,為假跳出循環(huán)
    重復(fù)上述過程,直到條件不成立就結(jié)束for循環(huán)
  • 最簡單的死循環(huán)for(;;);
    for循環(huán)的優(yōu)點(diǎn)在于節(jié)省空間

四大跳轉(zhuǎn)

C語言中一共有四種跳轉(zhuǎn) 分別是return局劲、break、continue奶赠、goto

  • break:
    立即跳出switch語句或循環(huán)語句
  • 應(yīng)用場景:
    switch
    循環(huán)結(jié)構(gòu)
  • break離開應(yīng)用范圍鱼填,存在是沒有意義的
  • 在多層循環(huán)中,一個(gè)break語句只向外跳一層
  • break下面不可以有語句,因?yàn)閳?zhí)行不到
  • continue
    直接結(jié)束本輪循環(huán)毅戈,進(jìn)入下一輪循環(huán)
  • 應(yīng)用場景:
    循環(huán)結(jié)構(gòu)
    和break一樣離開應(yīng)用范圍剔氏,存在是沒有意義的

  • goto這個(gè)要分開來講爭議很多

goto
這是一個(gè)不太值得探討的話題,goto 會破壞結(jié)構(gòu)化程序設(shè)計(jì)流程竹祷,它將使程序?qū)哟尾磺澹也灰鬃x羊苟,所以慎用
goto 語句塑陵,僅能在本函數(shù)內(nèi)實(shí)現(xiàn)跳轉(zhuǎn),不能實(shí)現(xiàn)跨函數(shù)跳轉(zhuǎn)(短跳轉(zhuǎn))蜡励。但是他在跳出多重循環(huán)的時(shí)候效率還是蠻高的

return
結(jié)束當(dāng)前函數(shù)令花,將結(jié)果返回給調(diào)用者


循環(huán)結(jié)構(gòu)的循環(huán)體中存在其他的循環(huán)結(jié)構(gòu),我們稱之為循環(huán)嵌套
注意: 一般循環(huán)嵌套不超過三層
外循環(huán)執(zhí)行的次數(shù) * 內(nèi)循環(huán)執(zhí)行的次數(shù)就是 內(nèi)循環(huán)總共執(zhí)行的次數(shù)

在多重循環(huán)中凉倚,如果有可能兼都,應(yīng)當(dāng)將最長的循環(huán)放在最內(nèi)層,最短的循環(huán)放在最外層稽寒,以減少 CPU 跨切循環(huán)層的次數(shù)

  • 一般外循環(huán)控制行數(shù)內(nèi)循環(huán)控制列數(shù)
    來幾個(gè)練習(xí)
    正三角,尖尖朝上
    倒三角,尖尖朝下
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扮碧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子杏糙,更是在濱河造成了極大的恐慌慎王,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宏侍,死亡現(xiàn)場離奇詭異赖淤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谅河,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門咱旱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绷耍,你說我怎么就攤上這事吐限。” “怎么了褂始?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵毯盈,是天一觀的道長。 經(jīng)常有香客問我病袄,道長搂赋,這世上最難降的妖魔是什么赘阀? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮脑奠,結(jié)果婚禮上基公,老公的妹妹穿的比我還像新娘。我一直安慰自己宋欺,他們只是感情好轰豆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著齿诞,像睡著了一般酸休。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上祷杈,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天斑司,我揣著相機(jī)與錄音,去河邊找鬼但汞。 笑死宿刮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的私蕾。 我是一名探鬼主播僵缺,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼踩叭!你這毒婦竟也來了磕潮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤容贝,失蹤者是張志新(化名)和其女友劉穎揉抵,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗤疯,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冤今,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茂缚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戏罢。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖脚囊,靈堂內(nèi)的尸體忽然破棺而出龟糕,到底是詐尸還是另有隱情,我是刑警寧澤悔耘,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布讲岁,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏缓艳。R本人自食惡果不足惜校摩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阶淘。 院中可真熱鬧衙吩,春花似錦、人聲如沸溪窒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澈蚌。三九已至摹芙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宛瞄,已是汗流浹背浮禾。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坛悉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓承绸,卻偏偏與公主長得像裸影,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子军熏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355

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