將若干個C語句使用花括號{ }包括起來造成複合語句。花括號內能夠包含任何C語句,函數
其通常形式爲:測試
{spa
語句1;code
語句2;blog
……it
語句n;for循環
}table
if語句有三種語法形式,構成三種分支結構。class
1)流程(單選控制結構)變量
語句形式以下:
if (表達式)語句;
其中,表達式能夠是任何種類的表達式。
執行過程當中:若表達式的值爲邏輯真(非0值),則執行if的內嵌語句;若表達式的邏輯值爲假(0值),則跳過該語句,執行if語句的下一條語句。
單選控制結構只有1條語句可供選擇:或者執行,或者不執行。
如:高考分數大於650分,則選擇清華大學。
if (scores > 650) University=Tsinghua University;
語句形式以下:
if (表達式)
語句1;
else
語句2;
表明兩路分支結構,即二選一控制結構。
執行過程:若是表達式的值爲真,則執行語句1;不然,執行語句2.
如,求b的絕對值
if (b>=0)
a=b;
else
a=-b;
若是語句一、語句2不須要採用複合語句時,if語句能夠用條件運算符?:簡化。
如,求b的絕對值能夠這麼寫
a=(b>=0)?b:-b;
語句形式以下:
if ( 表達式1) 語句1;
else if(表達式2) 語句2;
else if(表達式3) 語句3;
……
else if(表達式n) 語句n;
else 語句n+1;
根據條件的斷定,進行多路分支選擇,即多選一控制結構。
執行過程:依次計算各表達式的值;若某個表達式的值爲真,則執行相應的語句,而後執行if以後的後續語句。
if語句中的最後一條else語句用來處理全部條件均不成立的狀況,即當全部表達式的值均爲假時,執行最後一個else後的語句。若是全部條件均不成立時,不須要完成任何操做,則可省略else。
C語言容許if語句嵌套,if的內嵌語句能夠是另外一條三種形式之一的if語句。
如:在a>=b的條件下,判斷a,c中的最大值:
if (a>=b) if(a>=c) printf("max=%d\n",a); else printf("max=%d\n",c);
在if流程中嵌套了if…else流程。
使用if語句嵌套時,應注意if與else的配套關係,以避免發生二義性。
如:用if語句完成一個分段函數計算:
-a x<0 | |
y= | 0 x=0 |
a x>0 |
若是程序段爲:
y=-a; if(x!=0) if(x>0) y=a; else y=0;
執行結果就時錯誤的,問題出在else和if的配對。C語言採用的是最鄰近配對原則,else老是與它最近的if配對,儘管形式上寫成了else與第一個if配對,但語法上else是與第二個if配對的,因此出現錯誤,這種狀況出現,可採用複合語句的方法來解決。
程序段改寫爲:
y=-a; if(x!=0){ if(x>0) y=0; } else y=0;
採用複合語句,從語法上規定了程序段第3~5行已經是第一個if語句的一條完整的內嵌語句,是一個if流程,所以不能再與else子句配對,從而使得else與第一個if語句配對。
switch(表達式) { case常量1:語句1; break; case常量2:語句2; break; …… case常量n:語句n; break; default:語句n+1; }
其中,switch,case和default爲關鍵字。switch後的表達式能夠是整型或字符型表達式,但不能是關係表達式或邏輯表達式。常量1~n能夠是整數、字符或常量 表達式。
執行過程:計算swicth語句中的表達式的值,再依次與case後面的1~n個常量比較,當表達式的值與某個case後的常量相等時,則執行該case對應的語句;break語句能夠跳出switch結構。
若是n個常量都不等於switch中的表達式的值,則執行default後的語句。
每一個case後的語句能夠是單條語句或空語句,也能夠是多條語句構成的一個程序段。
break語句的做用是結束switch語句,使流程跳出switch結構。缺乏break語句不能實現多路分支。
通常形式:
for(表達式1;表達式2;表達式3)
循環體
表達式1——通常爲賦值表達式,爲循環控制變量賦初值
表達式2——通常爲關係表達式或邏輯表達式,爲控制循環結束的條件。
表達式3——通常爲賦值表達式,對循環控制變量進行修改(增量或減量)
循環體——能夠是單語句,也能夠是複合語句
while語句
通常形式:
while(表達式)
循環體
2)do…while語句
通常形式爲:
do循環體while(表達式);
1)for(…) { … while(…) {…} …… } 2)do { … for(…) {…} … }while; 3)while(…) { … do{ … }while(); … } 4)for(…) { … for(…) {…} … }
1)break語句
可用於switch語句中,使某個case子句執行完後,跳出switch結構,實現多路分支。
在for、while和do…while循環結構中,當須要循環在必定條件下提早終止時,break語句能夠跳轉出循環結構。
break語句提供了經過中間測試使循環結束的中間出口方法。
2)continue語句
continue語句只能用於循環結構,continue語句結束本次循環,直接進入本循環結構的下一次循環操做
3)goto語句
通常形式爲
goto標號;
…
標號:語句
標號使用標識符表達
標號表明的語句能夠是一個空語句
goto語句只能從循環嵌套內層轉向外層,反之則不行。