一起學習C語言:C語言基本語法(一)

  上一章 <一起學習C語言:C語言數據類型> 系列內容中,我們瞭解了整數類型、字符類型和浮點數類型的使用方法以及二進制到八進制、十進制和十六進制的轉換方式。本章節,我們學習C語言基本語句用法,以及常用的運算符號。


章節預覽:

C語言基本語法
1. if語句
1.1 if語句用法
1.2 if語句分析
目錄預覽


章節內容:


C語言基本語法


  做任何事情都需要經過思考再做決定。我們的程序中,通過不同的表達語句來完成程序執行時的“思考”工作。從這些語句裏,可以體現出我們對代碼的理解。


1. if語句

1.1 if語句用法

  生活中,每天都會面臨着各種選擇,比如:中午吃什麼飯,一會兒去打籃球還是打羽毛球,今天幾點下班?程序中,同樣面臨着不同的場景,需要我們編寫判斷語句去執行,並完成處理。

 【例1.1】 商場一千克蘋果賣5元錢,購買N公斤蘋果需要多少錢?

  根據這個例子,我們可以定義出一千克的價格和購買的數量,然後通過價格乘以數量得到總額:

    int kg = 5; //一千克的價格
    int amount = 0; //購買的數量

    增加輸出語句:
        printf(“我們商店新到了一批蘋果,一千克5元錢,請問您需要多少千克?\n”);

    增加接收語句:
        scanf("%d",&amount);

    使用if語句判斷:
        if(0 < amount) 或 if (amount > 0)

    輸出結果:
        printf(“您一共購買%d千克,消費:%d元。”, amount, kg * amount);

    接下來,我們執行完整代碼:
        int kg = 5; //一千克的價格
        int amount = 0; //購買的數量
        printf(“我們商店新到了一批蘋果,一千克5元錢,請問您需要多少千克?\n”);
        scanf("%d",&amount);
        if(amount > 0)
          printf(“您一共購買%d千克,消費:%d元。”, amount, kg * amount);

    這段代碼中,if語句構成方式爲:
        if(表達式)
          語句

        if語句中的“表達式”可以是任意表達式,其中關係表達式和邏輯表達式最爲常見。在if(amount > 0)中,“amount > 0”就是一個關係表達式。所謂關係表達式就是由兩個數值進行比較的式子。

1.1-1 通過判斷條件

1.1-2 未通過判斷條件

  參考圖1.1-1和1.1-2,我們通過購買的數量作爲判斷條件,如果amount大於0,輸出結果(執行語句),否則不輸出。


  下面我們來分析另一種if語句用法,if...else:

    輸出結果改成:
            printf(“您一共購買%d千克,消費:%d元。”, amount, kg * amount);
        else
            printf(“您的要求無法滿足,購買失敗。”);

    執行完整代碼:
        int kg = 5; //一千克的價格
        int amount = 0; //購買的數量
        printf(“我們商店新到了一批蘋果,一千克5元錢,請問您需要多少千克?\n”);
        scanf("%d",&amount);
        if(amount > 0)
          printf(“您一共購買%d千克,消費:%d元。”, amount, kg * amount);
        else
          printf(“您的要求無法滿足,購買失敗。”);


    這段代碼中,if語句構成方式爲:
      if(表達式)
        語句1
      else
        語句2

      語句1和語句2可以是一個簡單的語句,也可以是一個複合語句,還可以是另一個if語句或按照這種形式嵌套多個if語句。

1.1-3 if...else通過判斷條件

1.1-4 if...else未通過判斷條件

  參考圖1.1-3和1.1-4,我們還是通過購買的數量作爲判斷條件,如果amount大於0,輸出消費金額,否則輸出購買失敗。

1.2 if語句分析

  參考上面2個例子,可以初步瞭解使用if語句實現的選擇結構。

  if語句一般分爲三種形式:

  1. if(表達式)                      (語句形式一)
    語句

    或 if(表達式) 語句         (語句形式二)


  1. if(表達式)                      (語句形式一)
    語句1
    else
    語句2

    或 if(表達式) 語句1       (語句形式二)
    else 語句2


  1. if(表達式1)                    (語句形式一)
    語句1
    else if(表達式2)
    語句2

    else if(表達式n)
    語句n
    else
    語句n+1

    或 if(表達式1) 語句1      (語句形式二)
    else if(表達式2) 語句2

    else if(表達式n) 語句n
    else 語句n+1


 【例4.2】使用僞隨機函數rand()得到5以內的值,然後加上“表達式n”的n值並輸出結果。

  根據這個例子,我們可以生成僞隨機數N,然後編寫if語句:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main() {
       int N = 0;
       srand((unsigned)time(NULL));
       N = rand() % 5;
       if (N == 1) //語句形式一
         printf(“N=%d,n=%d. \n”, N, N + 1);
       else if (N == 2)
         printf(“N=%d,n=%d. \n”, N, N + 2);
       else if (N == 3) printf(“N=%d,n=%d. \n”, N, N + 3); //語句形式二
       else if (N == 4) printf(“N=%d,n=%d. \n”, N, N + 4);
       else
         printf(“N=%d,n=%d. \n”, N, N + 5); //語句形式一

        return 0;
    }


    程序分析:
      1. 根據time()函數獲取到當前時間,並通過srand()函數重新“播種”僞隨機數種子。
      2. 通過rand()函數生成隨機數,然後通過取模運算符“%”獲取到0-4的整數(5會被整除,餘0)。
      3. 由多個if語句組成的分支結構,它首先從“N == 1”開始判斷,如果不相等,則繼續向下執行一直到“N == 4”,如果都不相等,則進入else分支下的語句執行。


 【例4.3】 我們玩一個猜牌遊戲,現在桌子上有三種牌,分別是“J”、“Q”、“K”。現在,我們隨機抽取一張牌,如果抽到“J”或“Q”只需要輸出普通牌即可,如果抽到“K”我們需要輸入2個數字並輸出它們相加的結果。

    根據這個例子,我們可以生成僞隨機數N,然後轉換到對應的牌數:
      #include <stdio.h>
      #include <stdlib.h>
      #include <time.h>

      int main() {
         int N = 0, a = 0, b = 0;
         char ch = 0;
         srand((unsigned)time(NULL));
         N = rand() % 3;
         if (N == 0)
           ch = ‘J’;
         else if (N == 1)
           ch = ‘Q’;
         else if (N == 2)
           ch = ‘K’;

         if (ch == ‘J’ || ch == ‘Q’)
            printf(“這是一張普通牌。”);
         else if (ch == ‘K’)
         {
            printf(“請您輸入兩個數字,每次輸入完成請按回車鍵: \n”);
            scanf("%d%d", &a, &b);
            printf(“您抽到了幸運牌,並得到吉祥數字%d。”, a + b);
          }

         return 0;
}


  程序分析:
    1. 我們首先定義了三個整形對象,它們分別表示隨機數N、數字a和數字b。第二行定義了一個字符對象,它用來記錄隨機數N轉換的牌號。
    2. 根據time()函數獲取到當前時間,並通過srand()函數重新“播種”僞隨機數種子。
    3. 通過rand()函數生成隨機數,然後通過取模運算符“%”獲取到0-2的整數(3會被整除,餘0)。
    4. 由三個if語句組成的分支結構,它首先從“N == 0”開始判斷,如果不相等,則繼續向下執行一直到“N == 2”,執行到對應語句時,將由字符對象ch記錄牌號。
    5. 由二個if語句組成的分支結構,如果“ch == 'K”成立,將執行語句塊(1)。示例中,我們通過if (ch == ‘J’ || ch == ‘Q’)語句,直接判斷了“J”和“Q”。其中,“||”稱爲邏輯或運算符,在後面小節“邏輯運算符”中講述。

(1):當我們的判斷語句需要執行多行語句時,必須使用語句塊。語句塊由大括號組成,即左大括號“{”和右大括號“}”。


目錄預覽


<一起學習C語言:C語言發展歷程以及定製學習計劃>
<一起學習C語言:初步進入編程世界(一)>
<一起學習C語言:初步進入編程世界(二)>
<一起學習C語言:初步進入編程世界(三)>
<一起學習C語言:C語言數據類型(一)>
<一起學習C語言:C語言數據類型(二)>
<一起學習C語言:C語言數據類型(三)>

發佈了97 篇原創文章 · 獲贊 218 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章