程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言中的程序結構,C語言程序結構

C語言中的程序結構,C語言程序結構

編輯:關於C語言

C語言中的程序結構,C語言程序結構


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        else
11        {
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             else
13             { 
14                    y=x;
15             }
16       }
17       else
18       {
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        else
15        {
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,則輸出結果如下:

                                                                        *****

                                                                        *****

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved