找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

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


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

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

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

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

舉個例子:

大家靜下心來想想,其實(shí)在日常生活中,我們在安排自己的行為活動時大致也就這三類情況。比如我們坐地鐵,(順序開始:)先要走出校門,然后找地鐵站,然后去售票機(jī)投幣買票。(循環(huán)開始:)發(fā)現(xiàn)到黑龍江大學(xué)票價是三元,那么在我投幣數(shù)小于三元的情況下我就要一直往里投一元硬幣,投了三次(此時錢數(shù)等于三元,而不是小于三元啦),售票機(jī)就吐票了。(判斷開始:)到了上車時我還要判斷坐往哪個方向開的車吧,有兩個方向:一個開往哈東站,一個開往哈南站。在我要去黑大的情況下,我當(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語句:

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

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

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

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

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

while(1)

{

循環(huán)體;

}

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

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

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

--for語句:

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

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)不使用時都是可以省略的,但是那兩個分號;是不能省略的。

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

1.for( ; ;)語句;

這是一個死循環(huán),循環(huán)體會永遠(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)體里有更新的時候使用這種形式。

for(i=1;i<88)

{

i=i*4+5;

}

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

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

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

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


--if常用分支語句:


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

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

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

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

{

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

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

...

}

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

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

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

{

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

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

...

}else{


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

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

...

}

3./*有多個if...else...嵌套的情況*/

else if實(shí)際上是一種變形,else if相當(dāng)于另一個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ī)則

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

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

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