C語言流程控制
- 1、選擇結構
- 1.1、第一種:if ...else / if ...else if...else
- 1.2、第二種:switch case
- 2、循環結構
- 2.1、第一種:for循環
- 2.1、第二種:while循環
- 2.2、第三種:do...while循環
在C語言程序里,一共有三種程序結構:順序結構、選擇結構(分支結構)、循環結構
1、選擇結構
邏輯上有一種類型,叫bool類型(又寫作boolean類型,中文叫布爾類型)。布爾類型只有兩個值,真和假。
C語言中選擇結構一共有兩種:
1.1、第一種:if …else / if …else if…else
if (bool值) // 如果bool值為真,則執行代碼段1,否則執行代碼段2
{代碼段1
}
else
{代碼段2
}
***********************************************************************
if (bool值1) // 如果bool值1為真,則執行代碼段1
{ // 否則則判斷bool值2是否為真,若為真則執行代碼段2代碼段1 // 否則直接執行代碼段3
}
else if (bool值2) // 開頭的if和結尾的else都只能有一個,但是中間的
{ // else if可以有好多個。代碼段2
}
else
{代碼段3
}
只要執行了其中的一個代碼段就會立馬跳出判斷語句。不再會進行判斷,執行下面的語句
1.2、第二種:switch case
涉及到的C語言關鍵字:switch case break default
switch (變量) // 執行到這一句時,變量的值已經知道了
{ // switch case語句執行時,會用該變量的值一次與各個
case 常數1: // case后的常數去對比,試圖找到第一個匹配項。代碼段1; // 找到匹配的項目后,就去執行該case對應的代碼段break; // 如果沒找到則繼續下一個case,直到default。
case 常數2: // 如果前面的case都未匹配,則default匹配。代碼段2;break;.....default:代碼段n;break;
}
【注】
1、case中必須是常數,而且必須是整形(不能是float double,可以是int char)
2、一般來說,每個case中代碼段后都必須有一個break;如果沒有,結果可能會讓你大吃一驚
3、case之后一般都會有default。語法上允許沒有default,但是建議寫代碼時一定要寫。
switch case和if else對比:
1、if else適合對比條件比較復雜,但是分支比較少的情況;switch case適合那種對比條件
不復雜,但是分支數很多的情況。
2、所有的選擇結構,其實都可以用if else來實現。但是只有部分才可以用switch case實現。
一般的做法是:在適合使用switch case的情況下會優先使用switch case,如果不適合使用switch case,則不得不使用if else。
代碼示例可以參考郝斌版C語言。
2、循環結構
C語言中常用的循環結構有三個:for循環、while循環、do while循環。
2.1、第一種:for循環
for (循環控制變量初始化; 循環終止條件; 循環控制變量增量)
{ 循環體
}******************************************
eg:for(i=0;i<=4;i++)
{nihao;
}//循環次數 = 4 - 0 + 1
for循環的執行步驟:
1、先進行循環控制變量初始化
2、執行循環終止條件,如果判斷結果為真,則進入第3步;如果為假則循環終止,退出。
3、執行循環體。
4、執行循環控制變量增量,轉入第2步。
以例子位例:由此可見,i = 0只執行一次,進入循環后,就不在執行i = 0了,執行完循環后i的值位5
int i = 0; int i = 0;
for(;i<=4;i++) for( ;i<=4;)
{ { nihao; nihao;i++;
} }
//這2段代碼和上面的例子代碼等價的
【注】
for(; ;);//此乃死循環
2.1、第二種:while循環
i = 1;
sum = 0; // 循環初始化
while (i < 100) // 終止條件
{printf("i = %d.\n", i);sum += i; // 循環體i += 2; // 循環控制增量,屬于循環體的一部分
}
while循環的執行步驟:
1、首先是循環初始化。這一部分其實不屬于while循環本身。
2、先判斷終止條件是否滿足。如果是真,則進入第2步;否則直接退出。
3、執行循環體,然后轉入第2步。
while(1);//死循環
2.2、第三種:do…while循環
i = 1; sum = 0; // 初始化條件
do
{ printf("i = %d.\n", i); sum += i;i += 2; // 增量,循環體的一部分
}
while (i < 100); // 終止條件,記住這里有個;號
do while循環的執行步驟:
1、首先是循環初始化。這一部分其實不屬于do while循環本身。
2、執行循環體(循環控制變量的增量是循環體的一部分)
3、判斷終止條件。若成立,則轉入2;若不成立則退出
while循環和do while循環哪里不同?while循環是先判斷后執行,do while循環是先執行后判斷等循環開始轉了之后,其實是一樣的。do…while循環中循環體一定會執行一次。
代碼示例可以參考郝斌版C語言。