C語言程序的三種基本結構


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM