C語言程式設計譚浩強版 七

2021-07-15 22:57:22 字數 3824 閱讀 2231

5.1  關係運算子和關係表示式

5.1.1 關係運算子及其優先次序

在c語言中有以下關係運算子:

1) <    小於

2) <=  小於或等於

3) >    大於

4) >=  大於或等於

5) ==  等於

6) !=   不等於

關係運算子都是雙目運算子,其結合性均為左結合。

關係運算子的優先順序低於算術運算子,高於賦值運算子。

在六個關係運算子中,<,<=,>,>=的優先順序相同,高於==和!=,==和!=的優先順序相同。

5.1.2 關係表示式

關係表示式的一般形式為: 表示式 關係運算子 表示式

例如:a + b > c - d;

關係表示式的值是真」和「假」,用「1」和「0」表示。

例5.1

#include/* 關係表示式 */

int main(void)

其語義是:如果表示式的值為真,則執行其後的語句, 否則不執行該語句。

例5.3

#include/* 基本的if語句 */

int main(void)

else }

改用if-else語句判別a,b的大小,若a大,則輸出a,否則輸出b。

3、 第三種形式為if-else-if形式

其一般形式為:

if(表示式1)

語句1;

else if(表示式2)

語句2;

else if(表示式3)

語句3; …

else if(表示式m)

語句m;

else

語句n;

其語義是:依次判斷表示式的值,當出現某個值為真時,則執行其對應的語句。

然後跳到整個if語句之外繼續執行程式。 如果所有的表示式均為假,則執行語句n。

然後繼續執行後續程式。

例5.5

#include/* if else if  else if */

int main(void)

else if(c >= '0' && c<='9')

else if(c >='a' && c<='z')

else if(c >='a' && c<='z')

else

}

本例要求判別鍵盤輸入字元的類別。可以根據輸入字元的ascii碼來判別型別。

由ascii碼表可知ascii值小於32的為控制字元。在「0」和「9」之間的為數字,在

「a」和「z」之間為大寫字母,在「a」和「z」之間為小寫字母,其餘則為其它字元。

4、在使用if語句中還應注意以下問題:

1) 在三種形式的if語句中,在if關鍵字之後均為表示式。該表示式通常是邏輯表

達式或關係表示式,但也可以是其它表示式,如賦值表示式等,甚至也可以

是乙個變數。

例如:if(a=5) 語句; if(b) 語句; 都是允許的。只要表示式的值為非0,即為「真」。

2) 在if語句中,條件判斷表示式必須用括號括起來,在語句之後必須加分號。

3) 在if語句的三種形式中,所有的語句應為單個語句,如果要想在滿足條件時

執行一組(多個)語句,

則必須把這一組語句用{}括起來組成乙個復合語句。但要注意的是在}之後不

能再加分號。

例如: if(a>b)

5.3.2  if 語句的巢狀

當if語句中的執行語句又是if語句時,則構成了if 語句巢狀的情形。

注意:在沒有{}的程式中,else 總是與它前面最近的if配對,所以,

在程式中我們盡量使用{}來配對if 與else減少程式歧義!

例5.6

#include/* if語句的巢狀 */ 

int main(void)

else

} else

}

本例中用了if語句的巢狀結構。採用巢狀結構實質上是為了進行多分支選擇,

實際上有三種選擇即a>b、a

而且程式更加清晰。因此,在一般情況下較少使用if語句的巢狀結構。以使

程式更便於閱讀理解。

例5.7

#include/* if語句巢狀 */

int main(void)

5.4  switch語句

c語言還提供了另一種用於多分支選擇的switch語句, 其一般形式為:

switch(表示式)

其語義是:計算表示式的值。 並逐個與其後的常量表示式值相比較,當表示式的值

與某個常量表示式的值相等時, 即執行其後的語句,然後不再進行判斷,繼續執行

後面所有case

後的語句。如表示式的值與所有case後的常量表示式均不相同時,則

執行default後 的語句。

例5.9

#includeint main(void)

}

本程式是要求輸入乙個數字,輸出乙個英文單詞。但是當輸入3之後,卻執行了case3

以及以後的所有語句,輸出了wednesday 及以後的所有單詞。這當然是不希望的。為

什麼會出現

這種情況呢?這恰恰反應了switch語句的乙個特點。在switch語句中,「case

常量表示式」只

相當於乙個語句標號,表示式的值和某標號相等則轉向該標號執行,但

不能在執行完該標

號的語句後自動跳出整個switch語句,所以出現了繼續執行所有後面

case語句的情況。這

是與前面介紹的if語句完全不同的,應特別注意。為了避免上述情

況,c語言還提供了一種

break語句,專用於跳出switch語句,break 語句只有關鍵字

break,沒有引數。在後面還將

詳細介紹。修改例題的程式,在每一case語句之後增加

break 語句, 使每一次執行之後均

可跳出switch語句,從而避免輸出不應有的結果。

#includeint main(void)

}

在使用switch語句時還應注意以下幾點:

1) 、在case後的各常量表示式的值不能相同,否則會出現錯誤。

2) 、在case後,允許有多個語句,可以不用{}括起來。

3) 、各case和default子句的先後順序可以變動,而不會影響程式執行結果。

4) 、default子句可以省略不用。

5.5程式舉例

例6.0   輸入三個整數,輸出最大數和最小數。

#includeint main(void)

else

if(max < c)

else

} printf("max = %d\nmin = %d\n",max,min);

}

本程式中,首先比較輸入的a,b的大小,並把大數裝入max,小數裝入min中,

然後再與c比較,

若max小於c,則把c賦予max;如果c小於min,則把c賦予

min。因此max內總是最大數,而

min內總是最小數。最後輸出max和min的

值即可。

例6.1   計算器程式。使用者輸入運算數和四則運算符,輸出計算結果。

#includeint main(void)

}



 

C語言程式設計譚浩強版 一

本章的一些概況這裡就不說了,直接進入細節的學習!3.1 c的資料型別 資料型別分為 基本型別 構造型別 指標型別 空型別 基本型別又分為 整型 字元型 實型 浮點型 又分為單精度型 雙精度型 列舉型別 構造型別又分為 陣列型別 結構體型別 共用體型別 3.2 常量和符號常量 在程式執行過程中,其值不...

C語言程式設計譚浩強版 三

3.5 字元型資料 3.5.1 字元常量 字元常量是用單引號括起來的乙個字元。例如 a b 都是合法字元常量。在 語言中,字元常量有以下特點 1 字元常量只能用單引號括起來,不能用雙引號或其它括號。2 字元常量只能是單個字元,不能是字串。3 字元可以是字符集中任意字元。但數字被定義為字元型之後就不能...

C語言程式設計譚浩強版 四

3.6 變數賦初值 語言程式中可有多種方法為變數提供初值。本小節先介紹在作變數定義的同時給變數賦以 初值的方法。這種方法稱為初始化。變數初始化不是在編譯階段完成的,而是在程式執行 時執行本函式時賦予初值的。在變數定義中賦初值的一般形式為 型別說明符變數1 值1,變數2 值2,例如 int a 3 i...