程式的三種基本結構 複合語句 將若幹個C語句使用花括弧{ }包括起來形成複合語句。花括弧內可以包含任何C語句, 其一般形式為: { 語句1; 語句2; …… 語句n; } 1.if條件分支語句 if語句有三種語法形式,構成三種分支結構。 1)流程(單選控制結構) 語句形式如下: if (表達式)語句 ...
程式的三種基本結構
複合語句
將若幹個C語句使用花括弧{ }包括起來形成複合語句。花括弧內可以包含任何C語句,
其一般形式為:
{
語句1;
語句2;
……
語句n;
}
1.if條件分支語句
if語句有三種語法形式,構成三種分支結構。
1)流程(單選控制結構)
語句形式如下:
if (表達式)語句;
其中,表達式可以是任何種類的表達式。
執行過程中:若表達式的值為邏輯真(非0值),則執行if的內嵌語句;若表達式的邏輯值為假(0值),則跳過該語句,執行if語句的下一條語句。
單選控制結構只有1條語句可供選擇:或者執行,或者不執行。
如:高考分數大於650分,則選擇清華大學。
if (scores > 650) University=Tsinghua University;
2)if…else流程(二選一控制結構)
語句形式如下:
if (表達式)
語句1;
else
語句2;
代表兩路分支結構,即二選一控制結構。
執行過程:如果表達式的值為真,則執行語句1;否則,執行語句2.
如,求b的絕對值
if (b>=0)
a=b;
else
a=-b;
如果語句1、語句2不需要採用複合語句時,if語句可以用條件運算符?:簡化。
如,求b的絕對值可以這麼寫
a=(b>=0)?b:-b;
3)else…if流程(多選一控制結構)
語句形式如下:
if ( 表達式1) 語句1;
else if(表達式2) 語句2;
else if(表達式3) 語句3;
……
else if(表達式n) 語句n;
else 語句n+1;
根據條件的判定,進行多路分支選擇,即多選一控制結構。
執行過程:依次計算各表達式的值;若某個表達式的值為真,則執行相應的語句,然後執行if之後的後續語句。
if語句中的最後一條else語句用來處理所有條件均不成立的情況,即當所有表達式的值均為假時,執行最後一個else後的語句。如果所有條件均不成立時,不需要完成任何操作,則可省略else。
4)if語句嵌套
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語句配對。
4.switch多路開關語句
一般形式為: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語句不能實現多路分支。
5.for迴圈
一般形式:
for(表達式1;表達式2;表達式3)
迴圈體
表達式1——一般為賦值表達式,為迴圈控制變數賦初值
表達式2——一般為關係表達式或邏輯表達式,為控制迴圈結束的條件。
表達式3——一般為賦值表達式,對迴圈控制變數進行修改(增量或減量)
迴圈體——可以是單語句,也可以是複合語句
6.while迴圈和do…while迴圈
1)while語句
while語句
一般形式:
while(表達式)
迴圈體
2)do…while語句
一般形式為:
do迴圈體while(表達式);
7.迴圈嵌套
1)for(…) { … while(…) {…} …… } 2)do { … for(…) {…} … }while; 3)while(…) { … do{ … }while(); … } 4)for(…) { … for(…) {…} … }
8.break,continue,goto語句
1)break語句
可用於switch語句中,使某個case子句執行完後,跳出switch結構,實現多路分支。
在for、while和do…while迴圈結構中,當需要迴圈在一定條件下提前終止時,break語句可以跳轉出迴圈結構。
break語句提供了通過中間測試使迴圈結束的中間出口方法。
2)continue語句
continue語句只能用於迴圈結構,continue語句結束本次迴圈,直接進入本迴圈結構的下一次迴圈操作
3)goto語句
一般形式為
goto標號;
…
標號:語句
標號使用標識符表達
標號代表的語句可以是一個空語句
goto語句只能從迴圈嵌套內層轉向外層,反之則不行。