1、程序結構:在C語言程序中,一共有三種程序結構:順序結構、選擇結構(分支結構)、循環結構;
順序結構:從頭到尾一句接着一句的執行下來,直到執行完最后一句;
選擇結構:到某個節點后,會根據一次判斷的結果來決定之后向哪一個分支方向執行;
循環結構:循環結構有一個循環體,循環體里是一段代碼。對於循環結構來說,關鍵在於根據判斷的結果,來決定循環體執行多少次;
注:在邏輯上有一種bool類型(也叫boolean類型,布爾類型),只有兩個值,即真和假。C語言的判斷表達式最終的值就是一個bool類型,這個判斷表達式的bool值就決定了選擇結構如何選擇,循環結構如何循環;
2、順序結構:順序結構很簡單,一般我們遇到的除了選擇結構和循環結構外,都是順序結構;
3、選擇結構:C語言中常用的選擇結構主要有以下兩種:
(1) if else:引入關鍵字:if else else if
if (bool值) // 如果bool值為真,則執行代碼段1,否則執行代碼段2
{
代碼段1
}
else
{
代碼段2
}
if (bool值1) // 如果bool值1為真,則執行代碼段1,否則判斷bool值2是否為真
{
代碼段1
}
else if (bool值2) // 若bool值2為真則執行代碼段2,否則直接執行代碼段3
{ // 開頭的if和結尾的else都只能有一個,但是中間的else if可以有好多個
代碼段2
}
else
{
代碼段3
}
1 #include <stdio.h> 2 3 int main(void) 4 { 5 int a, b, max; 6 7 a = 456; 8 b = 45; 9 10 if (a > b) // 判斷表示式 11 { 12 max = a; 13 printf("true.\n"); 14 } 15 else if (a == b) 16 { 17 max = a; 18 printf("a == b.\n"); 19 } 20 else 21 { 22 max = b; 23 printf("false.\n"); 24 } 25 26 printf("max = %d.\n", max); 27 28 return 0; 29 }
(2) switch case:引入關鍵字:switch case break default
switch (變量) // 執行到這一句時,變量的值是已知的
{ // switch case語句執行時,會用該變量的值依次與各個case后的常數去對比,試圖找到第一個匹配項,找到匹配的項目后,
case 常數1: // 就去執行該case對應的代碼段,如果沒找到則繼續下一個case,直到default
代碼段1; // 如果前面的case都未匹配,則default匹配。
break;
case 常數2:
代碼段2;
break;
……
default:
代碼段n;
break;
}
注:第一,case中必須是常數,而且必須是整形;
第二,一般來說,每個case中代碼段后都必須有一個break;
第三,case之后一般都會有default,雖然語法上允許沒有default,但是建議寫代碼時一定要寫;
1 // 結構化設計-選擇結構示例代碼 switch case演示 2 #include <stdio.h> 3 4 int main(void) 5 { 6 int num; 7 8 num = 1; 9 10 switch (num) 11 { 12 case 1: 13 printf("a\n"); 14 break; 15 case 2: 16 printf("b\n"); 17 break; 18 case 3: 19 printf("c\n"); 20 break; 21 case 4: 22 printf("d\n"); 23 break; 24 default: 25 printf("-\n"); 26 break; 27 } 28 29 return 0; 30 }
(3) if else和switch case的區別:if else適合對比條件較復雜,但是分支比較少的情況,switch case適合那種對比條件簡單,但是分支較多的情況;
通常的做法是:在適合使用switch case的情況下會優先使用switch case,如果不適合則使用if else;
4、循環結構:C語言中常用的循環結構主要有以下三種:
(1) for:
for (循環控制變量初始化; 循環終止條件; 循環控制變量增量)
{
循環體
}
循環執行步驟:第一,先進行循環控制變量初始化;
第二,執行循環終止條件,如果判斷結果為真,則進入第三步;如果為假則循環終止並退出;
第三,執行循環體;
第四,執行循環控制變量增量,轉入第二步;
注:for循環()中的三部分除了循環終止條件外,其他兩部分都可以省略,但標准的for循環中,應該把循環控制變量的初始化,增量都放在()當中,並且在循環體中絕對不應該更改循環控制變量;
1 // 計算1+2+3+····+10 2 #include <stdio.h> 3 4 int main(void) 5 { 6 int i, sum; 7 8 printf("i = %d.\n", sum); 9 10 for (i=0,sum=0; i<=10; i++) 11 { 12 sum += i; 13 } 14 printf("sum = %d.\n", sum); 15 16 return 0; 17 }
(2) while:
循環控制變量初始化
while(循環終止條件)
{
循環體
循環控制變量增量
}
循環執行步驟:第一,先進行循環控制變量初始化(在while之前);
第二,判斷循環終止條件,如果判斷結果為真,則進入第三步;如果為假則不執行循環體;
第三,執行循環體;
第四,執行循環控制變量增量,轉入第二步;
1 // 計算100以內所有奇數的和 2 #include <stdio.h> 3 4 int main(void) 5 { 6 int i, sum; 7 8 i = 1; 9 sum = 0; 10 11 while(i < 100) 12 { 13 printf("i = %d.\n", i); 14 sum += i; 15 i += 2; 16 } 17 18 printf("sum = %d.\n", sum); 19 20 return 0; 21 }
(3) do while:
循環控制變量初始化
do
{
循環體
循環控制變量增量
}while (循環終止條件);
循環執行步驟:第一,先進行循環控制變量初始化(在do while之前);
第二,執行循環體;
第三,執行循環控制變量增量;
第四,判斷循環終止條件,如果判斷結果為真,則返回第二步;如果為假則直接退出循環;
1 // 計算100以內所有奇數的和 2 #include <stdio.h> 3 4 int main(void) 5 { 6 int i, sum; 7 8 i = 1; 9 sum = 0; 10 11 do 12 { 13 printf("i = %d.\n", i); 14 sum += i; 15 i += 2; 16 }while(i < 100); 17 18 printf("sum = %d.\n", sum); 19 20 return 0; 21 }
(4) 總結:不管哪種循環結構,都不能缺少循環控制條件初始化,終止條件,循環控制變量增量,循環體這四部分;
while循環是先判斷后執行,do while循環是先執行后判斷,等循環一次之后,其實都是一樣的;
(以上所述內容為學習朱老師的嵌入式課程后復習筆記所得,目的是自己復習鞏固知識,同時把自己學到的知識分享出來。能力有限,水平一般,如有錯誤,歡迎指正,謝謝!)
2017-02-26 17:52:18