找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2728|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

C語言教程(3)-控制語句

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:99082 發(fā)表于 2015-12-10 03:36 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
--C控制語句總結(jié):


一種完備的編程語言應(yīng)該為程序員提供以下三種程序流:

1.順序執(zhí)行語句序列(順序);

2.在滿足某個(gè)條件之下反復(fù)執(zhí)行一個(gè)語句序列(循環(huán));

3.通過進(jìn)行一個(gè)判斷在兩個(gè)可選的語句序列之間選擇執(zhí)行(分支);

舉個(gè)例子:

大家靜下心來想想,其實(shí)在日常生活中,我們在安排自己的行為活動(dòng)時(shí)大致也就這三類情況。比如我們坐地鐵,(順序開始:)先要走出校門,然后找地鐵站,然后去售票機(jī)投幣買票。(循環(huán)開始:)發(fā)現(xiàn)到黑龍江大學(xué)票價(jià)是三元,那么在我投幣數(shù)小于三元的情況下我就要一直往里投一元硬幣,投了三次(此時(shí)錢數(shù)等于三元,而不是小于三元啦),售票機(jī)就吐票了。(判斷開始:)到了上車時(shí)我還要判斷坐往哪個(gè)方向開的車吧,有兩個(gè)方向:一個(gè)開往哈東站,一個(gè)開往哈南站。在我要去黑大的情況下,我當(dāng)然是坐開往哈南站的。是不是很佩服當(dāng)年編寫這些編程語言的計(jì)算機(jī)工程師們對生活行為的強(qiáng)大歸納總結(jié)能力啊。

順序執(zhí)行語句順序(順序)相信大家都比較好理解,就是一句接著一句的執(zhí)行唄。循環(huán)控制語句主要涉及的控制型關(guān)鍵字:while、for、do while。分支控制循環(huán)語句主要涉及的控制型關(guān)鍵字:if else、switch break。


--while、for常用循環(huán)語句:


--while語句:

如果大家自己寫過程序,即使是簡單的小段程序也會(huì)接觸到while。大家在學(xué)習(xí)單片機(jī)沒有移植系統(tǒng)時(shí)(也就是裸機(jī)跑程序時(shí))其實(shí)程序主體就是在一個(gè)while(1){程序主體};的死循環(huán)里不斷的跑,遇到中斷時(shí)出去執(zhí)行完中斷然后回到程序中,也就是前臺(tái)、后臺(tái)的概念。一般復(fù)雜和實(shí)時(shí)性要求不高的小系統(tǒng)很適合這樣的程序,比如微波爐、電話機(jī)、玩具等等。

while(1){};怎么就死循環(huán)了呢。先來介紹介紹,一般形式為:

while(表達(dá)式){執(zhí)行語句};

while語句是先判斷后執(zhí)行,執(zhí)行語句部分被稱為循環(huán)體。若表達(dá)式為真,就執(zhí)行循環(huán)體。若表達(dá)式為假,可能就一次都不執(zhí)行。

什么是真呢?對于C語言來說,一個(gè)真表達(dá)式的值為1,一個(gè)假表達(dá)式為0。前面所得死循環(huán)就會(huì)永遠(yuǎn)的循環(huán)下去,因?yàn)?永遠(yuǎn)為真:

while(1)

{

循環(huán)體;

}

還有哪些是真?表達(dá)式為數(shù)值:其實(shí)可以說所有非零值都會(huì)被認(rèn)為是真,只有0被認(rèn)為是假。甚至負(fù)數(shù)也會(huì)被認(rèn)為是真。

也就是說while(3){循環(huán)體;}while(-1){循環(huán)體;}也都是死循環(huán)。

表達(dá)式為語句時(shí):表達(dá)式的形式是多樣的,要具體判斷表達(dá)式說的是不是真,是真執(zhí)行。

下邊有兩段while循環(huán)語句

/*while語句1*/

int i=2;

while(i==2)

{

循環(huán)體;

}

/*while語句2*/

int a=10;

while(a-->0)

{

循環(huán)體;

}

語句1會(huì)進(jìn)入循環(huán),因?yàn)閕等于2這件事是真的,并且會(huì)一直等于下去,所以循環(huán)體也會(huì)一直循環(huán)下去。語句2會(huì)進(jìn)入循環(huán),因?yàn)閍=10>0這件事也是真的,但當(dāng)a不斷自己減1(“--”為運(yùn)算符,表示自己減小1,即a=a-1;)當(dāng)a=0時(shí),a=0>0這件事就是假了,所以就會(huì)跳出循環(huán)體。

--for語句:

for循環(huán)把所有的三種動(dòng)作(初始化、檢測、更新)都放在一起。它的一般形式為:

for(<表達(dá)式1>;<表達(dá)式2>;<表達(dá)式3>)語句;

表達(dá)式1:賦值表達(dá)式。

表達(dá)式2:關(guān)系表達(dá)式或邏輯表達(dá)式,是循環(huán)的控制條件。

表達(dá)式3:一般為賦值表達(dá)式,使控制變量增大或減小。

其實(shí)對于表達(dá)式1、2、3和后面的執(zhí)行語句當(dāng)不使用時(shí)都是可以省略的,但是那兩個(gè)分號(hào);是不能省略的。

下邊列舉for語句幾種常用的變形:

1.for( ; ;)語句;

這是一個(gè)死循環(huán),循環(huán)體會(huì)永遠(yuǎn)的執(zhí)行下去。

2.for( ;表達(dá)式2;表達(dá)式3)語句;

可見這種情況沒有對初始值進(jìn)行賦值,所以當(dāng)初始值不是已知固定的,而是由前邊的程序運(yùn)算得到的,應(yīng)該使用這種形式。例如:

i=a-3;

for( ;i<k;i++){循環(huán)體};

3.for(表達(dá)式1;表達(dá)式2;)語句;

一般在控制變量在循環(huán)體里有更新的時(shí)候使用這種形式。

for(i=1;i<88)

{

i=i*4+5;

}

4.for(表達(dá)式1;表達(dá)式2;表達(dá)式3);

如果所有的工作都在表達(dá)式1、2、3中完成了,那就沒必要非要加個(gè)語句。直接以分號(hào)瀟灑的結(jié)尾吧。

5.for(i=1,j=a;i<j;i++,j--)語句;

表達(dá)式1和表達(dá)式3都可以有一項(xiàng)或多項(xiàng),多項(xiàng)時(shí)用逗號(hào),隔開。


--if常用分支語句:


在C語言里,if是控制型關(guān)鍵字。下邊列舉總能用到的if...else...條件判斷語句的變形形式。

1./*只有if判斷沒有else的情況*/

簡單形式的if語句可以選擇執(zhí)行或忽略一個(gè)動(dòng)作。

if(條件表達(dá)式)

{

執(zhí)行表達(dá)式1;

執(zhí)行表達(dá)式2;

...

}

2./*既有if還有else的情況*/

if else語句使程序能在兩個(gè)動(dòng)作之間進(jìn)行選擇。

if(條件表達(dá)式)

{

執(zhí)行表達(dá)式1;

執(zhí)行表達(dá)式2;

...

}else{


執(zhí)行表達(dá)式3;

執(zhí)行表達(dá)式4;

...

}

3./*有多個(gè)if...else...嵌套的情況*/

else if實(shí)際上是一種變形,else if相當(dāng)于另一個(gè)if else語句的else語句部分。

if(條件表達(dá)式1)

{

執(zhí)行表達(dá)式1;

執(zhí)行表達(dá)式2;

...

}else if(條件表達(dá)式2)

{


執(zhí)行表達(dá)式3;

執(zhí)行表達(dá)式4;

...

}else{


執(zhí)行表達(dá)式5;

執(zhí)行表達(dá)式6;

...

}


這次在文章里多多少少涉及到了點(diǎn)運(yùn)算符,如--、==、<之類的,大家可以先自己看看。下周就開始運(yùn)算符相關(guān)的內(nèi)容了,堅(jiān)持、奮斗。


以下是本系列教程文章列表:歡迎大家踴躍討論,有問題可在51黑論壇回帖提出.


C語言基礎(chǔ)教程(1):http://www.torrancerestoration.com/bbs/dpj-41177-1.html
C語言教程(2)-關(guān)鍵字 變量:http://www.torrancerestoration.com/bbs/dpj-41178-1.html
C語言教程(3)-控制語句:http://www.torrancerestoration.com/bbs/dpj-41179-1.html
C語言教程(4)-運(yùn)算符:http://www.torrancerestoration.com/bbs/dpj-41180-1.html
C語言教程(5)-函數(shù):http://www.torrancerestoration.com/bbs/dpj-41181-1.html
C語言教程(6)-數(shù)組與函數(shù)指針:http://www.torrancerestoration.com/bbs/dpj-41182-1.html

51單片機(jī)教程:http://www.torrancerestoration.com/bbs/mcu-xuexi-1.html
STM32教程:http://www.torrancerestoration.com/bbs/dpj-41167-1.html
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表