C語言幾種循環(huán)結(jié)構(gòu)—零基礎(chǔ)小白快速入門必學(xué)

循環(huán)語句是用于重復(fù)執(zhí)行某條語句(循環(huán)體)的語句褒侧,它包含一個(gè)控制表達(dá)式,每循環(huán)執(zhí)行一次都要對控制表達(dá)式進(jìn)行判斷姨伟,如果表達(dá)式為真惩琉,則繼續(xù)執(zhí)行循環(huán)。C語言提供了3中循環(huán)語句夺荒,分別為while語句瞒渠,do while語句和for語句良蒸。

while語句

while語句是控制表達(dá)式在循環(huán)體之前的循環(huán)語句,它的格式如下:

while(表達(dá)式)

? ?語句

這里的圓括號是強(qiáng)制要求的伍玖,圓括號之內(nèi)的表達(dá)式為控制表達(dá)式嫩痰,圓括號之外的語句為循環(huán)體。

while語句的執(zhí)行步驟窍箍,首先計(jì)算控制表達(dá)式的值串纺,如果表達(dá)式的值不為0(為真),則執(zhí)行循環(huán)體椰棘,接著再次判斷控制表達(dá)式纺棺,如果其值不為0,再次執(zhí)行循環(huán)體邪狞。執(zhí)行這個(gè)步驟直到控制表達(dá)式的值為0時(shí)停止祷蝌。

結(jié)果會輸出錯(cuò)誤如下:

1到50之間(包括1和50)的整數(shù)之和為1275

如果while的控制表達(dá)式一直不為0,那么循環(huán)將一直進(jìn)行下去外恕,稱為無限循環(huán)杆逗。這樣的循環(huán)在循環(huán)體中都包含break,goto,return或者導(dǎo)致程序終止的函數(shù)(如exit等),以在適當(dāng)?shù)臅r(shí)機(jī)終止程序鳞疲。

結(jié)果會輸出錯(cuò)誤如下:

1到50之間(包括1和50)的整數(shù)之和為1275

do while語句

do while語句與while語句非常相似罪郊,只不過do while語句在每次執(zhí)行完循環(huán)體之后對控制表達(dá)式進(jìn)行判斷的,因此do while語句的循環(huán)體至少會執(zhí)行一次尚洽,而while語句的循環(huán)體可能一次都不被執(zhí)行悔橄。do while語句的格式如下:

do ?

? ?語句

while(表達(dá)式);

do while循環(huán)的執(zhí)行步驟如下:首先執(zhí)行循環(huán)體,再計(jì)算控制表達(dá)式的值腺毫,如果表達(dá)式的值非零再繼續(xù)執(zhí)行循環(huán)體癣疟,然后再次判斷表達(dá)式的值。這個(gè)過程持續(xù)進(jìn)行潮酒,知道控制表達(dá)式的值為0睛挚,終止do while語句執(zhí)行。

建議對do while的循環(huán)體都使用大括號包裹起來急黎,因?yàn)榇罄ㄌ枙筪o while語句被誤認(rèn)為是while語句扎狱。

結(jié)果會輸出:

1到50之間(包括1和50)的整數(shù)之和為1275

for語句

for語句的格式如下:

for(表達(dá)式1;表達(dá)式2勃教;表達(dá)式3)

? ? 語句

for語句的執(zhí)行步驟是:首先執(zhí)行表達(dá)式1進(jìn)行初始化淤击,然后判斷表達(dá)式2的值是否為真,若為真故源,則執(zhí)行循環(huán)體污抬,然后執(zhí)行表達(dá)式3.隨后再次對表達(dá)式2的值進(jìn)行判斷,若為真绳军,則再次執(zhí)行循環(huán)體和表達(dá)式3印机,依次循環(huán)直到表達(dá)式2的值為0為止矢腻。

for語句的3個(gè)表達(dá)式都可以省略,若省略表達(dá)式1耳贬,則在執(zhí)行循環(huán)前沒有初始化的操作踏堡;若省略第三個(gè)表達(dá)式,則執(zhí)行完循環(huán)體后咒劲,沒有再需要執(zhí)行的語句顷蟆,循環(huán)體確保循環(huán)能夠在有限時(shí)間內(nèi)終止;若省略第二個(gè)表達(dá)式腐魂,則每次判斷都默認(rèn)為真帐偎,除非在循環(huán)體內(nèi)使用break,goto和程序終止函數(shù)外,循環(huán)不會停止蛔屹。

結(jié)果輸出如下:

1到50之間(包括1和50)的整數(shù)之和為1275

現(xiàn)在我們來看一道例題:

電梯在城市的高層建筑中廣泛應(yīng)用削樊。輸入電梯停靠樓層的列表兔毒,以0結(jié)束輸入漫贞,計(jì)算電梯到達(dá)最后樓層需要花費(fèi)的時(shí)間。列表中的數(shù)字表示電梯將在哪一層陀靠迅脐,電梯按照列表順序依次停靠豪嗽。假設(shè)電梯每上行一層需要花6秒時(shí)間谴蔑,每下行一層需要花費(fèi)4秒時(shí)間,電梯每停一次需要5秒龟梦。

方法一:

#include

int main(void)

{

int i,number,n=0,tm;

int *p,ft[100];

printf("Please input floors(Ends with 0): ");

scanf("%d",&number);

//輸入樓層列表隐锭,以0結(jié)束。

while(number != 0)

{

ft[n]=number;

n++;

scanf("%d",&number);//循環(huán)輸入

}

tm=0;

p=ft;

for(i=0;i

{

if(*p<*(p+1))

tm=tm+(*(p+1)-*p)*6+5;

else

tm=tm+(*p-*(p+1))*4+5;

p++;

}

printf("The time is%d ",tm);

return 0;

}

此種方法在開始先給循環(huán)輸入的變量一個(gè)初值计贰,用來滿足下面開始的循環(huán)輸入钦睡。

方法二:

#include

int main(void)

{

int i,number,n=0,tm;

int *p,ft[100];

printf("Please input floors(Ends with 0): ");

while(1)//使用死循環(huán)輸入

{

scanf("%d",&number);

if(number==0)

break;

ft[n]=number;

n++;

}

tm=0;

p=ft;

for(i=0;i

{

if(*p<*(p+1))

tm=tm+(*(p+1)-*p)*6+5;

else

tm=tm+(*p-*(p+1))*4+5;

p++;

}

printf("The time is%d ",tm);

return 0;

}

此種方法先是進(jìn)入死循環(huán),開始輸入躁倒,當(dāng)輸入滿足題目所需條件時(shí)赎婚,可以退出循環(huán)。但是必須要在每次讀入下一個(gè)值之前先判斷是否滿足退出條件樱溉,否則會多讀入一個(gè)值。

這是正確的結(jié)果纬凤,當(dāng)判斷語句放到最后時(shí)福贞,結(jié)果便會出錯(cuò),下面是出錯(cuò)代碼和結(jié)果停士。

這個(gè)結(jié)果是把0當(dāng)作一層樓給讀入了挖帘,然后把2層到0層的時(shí)間計(jì)入完丽,導(dǎo)致錯(cuò)誤。

循環(huán)體中的跳轉(zhuǎn)語句

在循環(huán)體中可以使用break拇舀,continue和goto跳轉(zhuǎn)語句逻族。

break語句。

break語句在循環(huán)體的中間設(shè)置退出點(diǎn)骄崩,用以跳出while聘鳞,do while和for循環(huán),直接執(zhí)行循環(huán)語句后面的語句要拂。除此之外抠璃,break語句還用于switch語句,用以跳出switch語句而直接執(zhí)行switch語句后面的語句脱惰。對于嵌套的循環(huán)語句和(或)switch語句搏嗡,break只能跳過其所在的那層循環(huán)或switch語句。

continue語句拉一。

continue語句并不跳出循環(huán)采盒,而是將程序執(zhí)行正好轉(zhuǎn)移到循環(huán)體末尾處,跳過本次循環(huán)中循環(huán)體余下的內(nèi)容蔚润。continue語句只能用于循環(huán)體中磅氨。

結(jié)果輸出:

以上十個(gè)非零數(shù)的和為:55

goto語句。

goto語句不僅可以用在循環(huán)體中抽碌,還可以用在程序的任何位置悍赢。與continue和break不同,它可以跳轉(zhuǎn)到同一個(gè)函數(shù)中任何有標(biāo)記的語句處货徙。goto依賴于定義在語句開頭的標(biāo)識符左权,其形式為:標(biāo)識符 : 語句。goto語句的形式為:goto 標(biāo)識符;

goto易于造成程序混亂痴颊,代碼難以閱讀赏迟,并且其他跳轉(zhuǎn)語句、return和exit語句能夠滿足大多數(shù)需要goto語句的情況蠢棱。除非萬不得已锌杀,盡量不要使用。

結(jié)果輸出:

0小于4

1小于4

2小于4

3小于4

i開始不小于4

結(jié)束語

每天進(jìn)步一點(diǎn)點(diǎn)泻仙,每天消化一點(diǎn)點(diǎn)糕再。如果你有更高的想法,歡迎一起交流玉转。如果覺得文章寫得還不錯(cuò)突想,點(diǎn)個(gè)贊唄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市猾担,隨后出現(xiàn)的幾起案子袭灯,更是在濱河造成了極大的恐慌,老刑警劉巖绑嘹,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稽荧,死亡現(xiàn)場離奇詭異,居然都是意外死亡工腋,警方通過查閱死者的電腦和手機(jī)姨丈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夷蚊,“玉大人构挤,你說我怎么就攤上這事√韫模” “怎么了筋现?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長箱歧。 經(jīng)常有香客問我矾飞,道長,這世上最難降的妖魔是什么呀邢? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任洒沦,我火速辦了婚禮,結(jié)果婚禮上价淌,老公的妹妹穿的比我還像新娘申眼。我一直安慰自己,他們只是感情好蝉衣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布括尸。 她就那樣靜靜地躺著,像睡著了一般病毡。 火紅的嫁衣襯著肌膚如雪濒翻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天啦膜,我揣著相機(jī)與錄音有送,去河邊找鬼。 笑死僧家,一個(gè)胖子當(dāng)著我的面吹牛雀摘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播八拱,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼阵赠,長吁一口氣:“原來是場噩夢啊……” “哼烁落!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起豌注,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎灯萍,沒想到半個(gè)月后轧铁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡旦棉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年齿风,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绑洛。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡救斑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出真屯,到底是詐尸還是另有隱情脸候,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布绑蔫,位于F島的核電站运沦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏配深。R本人自食惡果不足惜携添,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望篓叶。 院中可真熱鬧烈掠,春花似錦、人聲如沸缸托。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗦董。三九已至母谎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間京革,已是汗流浹背奇唤。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匹摇,地道東北人咬扇。 一個(gè)月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像廊勃,于是被迫代替她去往敵國和親懈贺。 傳聞我的和親對象是個(gè)殘疾皇子经窖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

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