上一章 <一起學習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,我們通過購買的數量作爲判斷條件,如果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和1.1-4,我們還是通過購買的數量作爲判斷條件,如果amount大於0,輸出消費金額,否則輸出購買失敗。
1.2 if語句分析
參考上面2個例子,可以初步瞭解使用if語句實現的選擇結構。
if語句一般分爲三種形式:
-
if(表達式) (語句形式一)
語句或 if(表達式) 語句 (語句形式二)
-
if(表達式) (語句形式一)
語句1
else
語句2或 if(表達式) 語句1 (語句形式二)
else 語句2
-
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語言數據類型(三)>