C語言中的程式結構

來源:互聯網
上載者:User

標籤:

C語言中的程式結構有三種,分別是順序結構、選擇結構和迴圈結構。

一、按照語句的先後順序執行的程式結構,稱為順序結構。

     下面以一個求三角形面積的例子進行說明,其代碼如下:

例1.1

 1 #include<stdio.h> 2 int main() 3 { 4       int width,height,s; 5       printf("請輸入三角形的底寬:\n"); 6       scanf("%d",&width); 7       printf("請輸入三角形的高:\n"); 8       scanf("%d",&height); 9       s=width*height/2;10       printf("三角形的面積為:s=%d\n",s);11       return 0;12  }

       程式在執行時,需先輸入三角形的底寬(6行),再輸入高(8行),程式往下執行,計算三角形的面積(9行),最後將面積顯示出來(10行)。這是按照語句的先後順序執行的。

二、根據某種條件的成立與否而採用不同的程式段進行處理的程式結構,稱為選擇結構。

     通常選擇結構有兩個分支,條件為真,執行甲程式段,否則執行乙程式段。有時,兩個分支還不能完全描述實際問題(例如將學產生績根據分數高低分成A,B,C,D,E等多個等級),需要分成多個分支,這樣的程式結構稱為多分支選擇結構。

1、if簡單語句

其文法形式如下:

    if(運算式)         

    {語句1}

功能:計算運算式的值,若為“真”,則執行語句1,否則將跳過語句1,執行if語句的下一條語句。

例2.1

 1 #include<stdio.h> 2 int main() 3 { 4       int age; 5       scanf("%d",&age); 6       if(age>18) 7       { 8             printf("您已經是成年人了!"); 9       }10       re&turn 0;11  }

      上述程式中,首先定義了整型變數age,在輸入age的值之後,根據age的值的大小,來判斷是否為成年人。運行代碼時,假如輸入的數值大於18歲,則輸出”您已經是成年人了!“,否則直接退出程式。

2、if—else語句

其文法形式如下:

  if(運算式)        

  {語句1}

  else

  {語句2}

功能:計算運算式的值,若運算式的值為”真“執行語句1,並跳過語句2,繼續執行if—else語句的下一條語句,若運算式為假,跳過語句1,執行語句2,然後繼續執行if—else語句            的下一條語句。

例2.2

 1 #include<stdio.h> 2 int main() 3 { 4        int age; 5        scanf("%d",&age); 6        if(age>18) 7        {   8               printf("您已經是成年人了!"); 9         }10        else11        {12               printff("您還是未成年人了!");13         }14      re&turn 0;15  }

     上述程式與例2.1相比,多了一條語句。在運行代碼時,假如輸入的數值大於18歲,則輸出”您已經是成年人了!“,否則輸出”您還是未成年人!“。

3、嵌套的if語句

在if語句和if—else語句形式中,語句1或語句2可以是任意合法語句。若它們也是if語句,就構成嵌套的if語句。嵌套形式有多種,下面介紹幾種。

     嵌套形式1                                     嵌套形式2                                     嵌套形式2

     if(運算式1)                                if(運算式1)                                  if(運算式1)

     {                                                {                                                 {語句1}

           if(運算式2)                                if(運算式2)                             else if(運算式2)

           {語句1}                                       {語句1}                                  {語句2}

           else                                        }                                                else 

           {語句2}                                 else                                              {語句3}

      }                                               {語句2}

      else

     {語句3}

例2.3:求下列分段函數

        當x>0時,y=x+1;當x=0時,y=x;當x<0時,y=x-1;

利用嵌套形式1:

 1 #include<stdio.h> 2 int main() 3 { 4       int x,y; 5       scanf("%d",&x); 6       if(x>=0) 7       { 8             if(x>0) 9             {10                    y=x+1;11             }12             else13             { 14                    y=x;15             }16       }17       else18       {19              y=x-1;20        }21        printf("x=%d,y=%d\n",x,y);22        return 0;23 }

利用嵌套形式2:

 1 #include<stdio.h> 2  int main() 3 { 4        int x,y; 5        scanf("%d",&x); 6        y=x; 7        if(x>=0) 8        { 9              if(x>0)10              {11                     y=x+1;12              }13        }14        else15        {16              y=x-1;17        }18        printf("x=%d,y=%d\n",x,y);19        return 0;20  }

利用嵌套形式3:

 1 int main() 2 { 3       int x,y;       4       scanf("%d",&x); 5       if(x>0) 6       { 7             y=x+1; 8       } 9       else if(x=0)10       {11             y=x;12       }13       else 14       {15             y=x-1;16       }17       printf("x=%d,y=%d\n",x,y);18       return 0;19 }

4、switch語句

其形式如下:

switch()

{  

    case 常量運算式1:語句1

    case 常量運算式2:語句2

    ……

    case 常量運算式n:語句n

    default: 語句n+1

}

主意:switch語句常與break連用,break的功能為終止它所在的switch語句。     

 例2.4根據學產生績的高低劃分等級,代碼如下:

 1 #include<stdio.h> 2 int main() 3 { 4      int x; 5      printf("請輸入學產生績:\n"); 6      scanf("%d",&x); 7      switch(x/10) 8      { 9            case 10: 10            case 9:11                  printf("A");12                  break;13            case 8:14                  printf("B");15                  break;16            case 7:17                  printf("C");18                  break;19            case 6:20                  printf("D");21                  break;22            case 5:23            case 4:24            case 3:25            case 2:26            case 1:27            case 0:28                  printf("E");29                  break;30            default:31                  printf("無效資料!");32      }33      return 0;34 }

   上述程式中,先定義一個整型變數x,在輸入x的值後,根據x所在的範圍,確定成績的等級。運行代碼時,假如輸入85,則輸出"B",這表示該學產生績等級為B。若該switch語句中,沒有break語句,則程式會繼續執行下面語句,輸出B、C、D、E。

三、控制一個代碼塊多次執行,知道某個條件被滿足的程式結構,稱為迴圈結構。

C語言中,while語句、do—while語句和for語句是直接控制迴圈過程的迴圈語句。

1、while語句

其文法形式如下:

   while(運算式)

   {迴圈體語句}

功能:首先計算運算式的值,若為”真“,則執行迴圈體語句,執行完畢後,再計算運算式的值,若仍為”真“,則重複執行迴圈體語句。直到運算式的值為”假“時,結束while語句的執行,繼續執行while語句後面的語句。

下面以求1+2+3+……+100的和為例,說明while迴圈語句的用法。

例3.1

 1 #include<stdio.h> 2 int main() 3 { 4       int s,i; 5       s=0; 6       i=1; 7       while(i<=100) 8       { 9             s=s+i;10             i++;11       }12       return 0;13 }

2、do—while語句

其文法形式如下:

  do

  {迴圈體語句}

  while(運算式);

功能:首先執行迴圈體語句,然後檢測迴圈控制條件運算式的值,若為”真“,則重複執行迴圈體語句,否則退出迴圈。

下面以求1+2+3+……+100的和為例,說明do—while迴圈語句的用法。

例3.2

 1 #include<stdio.h> 2 int main() 3  { 4        int s,i; 5        s=0,i=1; 6        do 7        { 8             s=s+i; 9             i++;10        }while(i<=100);11        return 0;12  }                            

3、for語句

其文法形式如下:

  for(運算式1;運算式2;運算式3)

  {迴圈體語句}

功能:首先計算運算式1的值,然後檢測運算式2的值,若其為“真”,則執行迴圈體語句,執行完畢後,在計算運算式3。然後,再測試運算式2的值是否為“真”,若為“真”,繼續執行迴圈體語句,若為“假”,則終止迴圈。

下面以求1+2+3+……+100的和為例,說明for迴圈語句的用法。

例3.3

 1 #include<stdio.h> 2 int main() 3 { 4       int i,s; 5       s=0; 6       for(i=1;i<=100;i++) 7       { 8             i++; 9       }10       return 0;11 }

    從例3.1、3.2和3.3可以看出三種迴圈語句可以相互轉化。但是它們也有各自的側重點,應當根據不同的需求,選取適宜的語句。

  • while語句和for語句屬於“當型”迴圈,即“先判斷,後執行;而do—while語句屬於“直到”迴圈,即“先執行,後判斷”。
  • 實際運用中,for語句多用於迴圈次數明確的問題,而無法確定迴圈次數的問題採用while語句或do—while語句比較自然。
  • for語句的三個運算式有多種變化,例如省略部分運算式或全部運算式,甚至把迴圈體也寫進運算式3中,迴圈體為空白語句,以滿足迴圈語句的文法要求。

4、迴圈嵌套

迴圈結構的迴圈體語句可以是任何合法的C語句。若一個迴圈結構的迴圈體中包含了另一個迴圈語句,則構成了迴圈嵌套,稱為多重迴圈。

下面以用*輸出一個矩形為例,說明迴圈嵌套的用法。

例3.4

 1 #include<stdio.h> 2 int main() 3 { 4       int i,j; 5       int width,height; 6       printf("輸入矩形的長和寬:\n"); 7       scanf("%d%d",&width,&height); 8       for(i=1;i<=width;i++)          //i控制矩形的長 9       {10             for(j=1;j<=height;j++)  //j控制矩形的寬11             {12                  printf("*");13             }14             printf("\n");                 //一行*輸出後換行15       }16       return 0;17 }

 

    上述程式中,首先申請四個變數,分別為i,j,width和height。i和j均作為迴圈控制變數,分別控制矩形的寬和高,當輸入width和height的值時,矩形的寬和高就確定了,最後利用for語句將矩形輸出來。

假如width=5,height=2,則輸出結果如下:

                                                                        *****

                                                                        *****

C語言中的程式結構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.