天天看點

C語言之三種基本結構

C語言程式的三種基本結構:順序結構、選擇結構(if語句)、循環結構(for、while、do-while)。

順序結構

從第一條語句執行到最後一條語句,按順序的執行。

C語言之三種基本結構

示例:

#include <stdio.h>
#include <math.h>

int main(int argc,char* argv){
        double x,y,sum;
        scanf("%lf%lf",&x,&y);
        sum = x*y;
        printf("%.2lf\n",sum);
        return 0;
}

           

選擇結構(switch、if語句)

C語言之三種基本結構

選擇結構分為 if語句 switch(開關)語句。

C 語言中 if 語句的文法:

(1)if 語句

一個 if 語句 由一個布爾表達式後跟一個或多個語句組成。

if(boolean_expression){
   /* 如果布爾表達式為真将執行的語句 */
}
           

(2) if…else 語句

一個 if 語句 後可跟一個可選的 else 語句,else 語句在布爾表達式為 false 時執行。

if(boolean_expression){
   /* 如果布爾表達式為真将執行的語句 */
}else{
   /* 如果布爾表達式為假将執行的語句 */
}
           

(3)嵌套 if 語句

可以在一個 if 或 else if 語句内使用另一個 if 或 else if 語句。

if( boolean_expression 1){
   /* 當布爾表達式 1 為真時執行 */
   if(boolean_expression 2){
      /* 當布爾表達式 2 為真時執行 */
   }
}
           

(4)if…else if…else 語句

一個 if 語句後可跟一個可選的 else if…else 語句,這可用于測試多種條件。

當使用 if…else if…else 語句時,以下幾點需要注意:

  • 一個 if 後可跟零個或一個 else,else 必須在所有 else if 之後。
  • 一個 if 後可跟零個或多個 else if,else if 必須在 else 之前。
  • 一旦某個 else if 比對成功,其他的 else if 或 else 将不會被測試。
if(boolean_expression 1){
   /* 當布爾表達式 1 為真時執行 */
}else if( boolean_expression 2){
   /* 當布爾表達式 2 為真時執行 */
}else {
   /* 當上面條件都不為真時執行 */
}
           

switch 語句

一個 switch 語句允許測試一個變量等于多個值時的情況。每個值稱為一個 case,且被測試的變量會對每個 switch case 進行檢查。

switch(expression){
    case constant-expression  :
       statement(s);
       break; /* 可選的 */
    case constant-expression  :
       statement(s);
       break; /* 可選的 */
  
    /* 您可以有任意數量的 case 語句 */
    default : /* 可選的 */
       statement(s);
}

           

switch 語句必須遵循下面的規則:

  • switch 語句中的 expression 是一個常量表達式,必須是一個整型或枚舉類型。
  • 在一個 switch 中可以有任意數量的 case 語句。每個 case 後跟一個要比較的值和一個冒号。
  • case 的 constant-expression 必須與 switch 中的變量具有相同的資料類型,且必須是一個常量或字面量。
  • 當被測試的變量等于 case 中的常量時,case 後跟的語句将被執行,直到遇到 break 語句為止。
  • 當遇到 break 語句時,switch 終止,控制流将跳轉到 switch 語句後的下一行。
  • 不是每一個 case 都需要包含 break。如果 case 語句不包含 break,控制流将會 繼續 後續的 case,直到遇到 break 為止。
  • 一個 switch 語句可以有一個可選的 default case,出現在 switch 的結尾。default case 可用于在上面所有 case 都不為真時執行一個任務。default case 中的 break 語句不是必需的。

嵌套 switch 語句

switch(ch1) {
   case 'A': 
      printf("這個 A 是外部 switch 的一部分" );
      switch(ch2) {
         case 'A':
            printf("這個 A 是内部 switch 的一部分" );
            break;
         case 'B': /* 内部 B case 代碼 */
      }
      break;
   case 'B': /* 外部 B case 代碼 */
}
           

示例:

#include <stdio.h>
#include <math.h>

int main(int argc,char* argv){
        int a = 10;
        // if
        if(a > 0){
                printf("a is bigger than 10");
        }

        // if -- else
        if( a == 11){
                printf("a is bigger than 10");
        }else{
                printf("a is smaller than 10");
        }
        // if -- else if--else
        if(a > 1){
                printf("a is bigger than 0");
        }else if(a > 2){
                printf("a is bigger than 2");
        }else{
                printf("a is smaller");
        }
        switch(a){
                case 1:
                        printf("1");
                        break;
                case 2:
                        printf("2");
                        break;
                default:
                        printf("10");
        }


        return 0;
}

           

循環結構(for、while、do-while)

有兩種結構:(1)當型;(2)直到型。循環是可以嵌套的。

  • 當型
    C語言之三種基本結構

    1.while 循環

    隻要給定的條件為真,C 語言中的 while 循環語句會重複執行一個目智語句。

while(condition)
{
   statement(s);
}
           

2.for 循環

for 循環允許您編寫一個執行指定次數的循環控制結構。

for ( init; condition; increment ){
   statement(s);
}
           
  • 直到型
    C語言之三種基本結構

    do…while 循環

    在 C 語言中,do…while 循環是在循環的尾部檢查它的條件。do…while 循環與 while 循環類似,但是 do…while 循環會確定至少執行一次循環。

do{
   statement(s);
}while( condition );
           

示例:

#include <stdio.h>
#include <math.h>

int main(int argc,char* argv){
        int a = 10;


        /* while 循環執行 */
        while( a < 20 ){
                printf("a 的值: %d\n", a);
                a++;
         }

        /* for 循環執行 */
        for( int a = 10; a < 20; a = a + 1 ){
                printf("a 的值: %d\n", a);
        }

        /* do 循環執行 */
        do{
                printf("a 的值: %d\n", a);
                a = a + 1;
         }while( a < 20 );
        return 0;
}
           

謝謝閱讀

繼續閱讀