C語言中if語句、if-else語句和switch語句詳解

2023-08-18 17:25:26 來源:知微之見

前言

C語言中,有三種條件判斷結構:if語句、if-else語句和switch語句。

一、人物簡介

第一位閃亮登場,有請今后會一直教我們C語言的老師 —— 自在。第二位上場的是和我們一起學習的小白程序猿 —— 逍遙。

二、if語句

基本語法
if (條件) {    // 代碼塊1}
代碼示例
#include < stdio.h >int main() {  int num = 5;  if (num > 0) {    printf("這個數為正數.n");  }  return 0;}
運行結果

三、if-else語句

基本語法
if (條件) {    // 代碼塊1} else {    // 代碼塊2}
代碼示例
#include < stdio.h >int main() {  int num = -2;  if (num > 0) {    printf("這個數為正數.n");  } else {    printf("這個數為負數.n");  }  return 0;}
運行結果

if語句嵌套使用

代碼示例
#include < stdio.h >int main() {    int num = 3;    if (num > 0) {        if (num < 5) {            printf("num在1到4之間n");        } else {            printf("num大于等于5n");        }    } else {        printf("num小于等于0n");    }    return 0;}

在這個示例中,外層的if語句判斷num是否大于0,如果成立,進入內層的if語句繼續判斷num是否小于5;


【資料圖】

如果不成立,執行else語句塊,輸出"num小于等于0"。

num的值是3,它既符合外層if語句的條件,也符合內層if語句的條件,所以程序輸出"num在1到4之間"。

運行結果

if else語句的鏈式使用

代碼示例
#include < stdio.h >int main() {    int score = 85;    if (score >= 90) {        printf("優秀n");    } else if (score >= 80) {        printf("良好n");    } else if (score >= 70) {        printf("中等n");    } else if (score >= 60) {        printf("及格n");    } else {        printf("不及格n");    }    return 0;}

在這個示例中,if else語句被鏈式使用,程序從上到下依次判斷score的值是否大于等于90、是否大于等于80、是否大于等于70、是否大于等于60,最終輸出對應的成績等級。

score的值是85,它大于等于80,但小于90,所以程序輸出"良好"。

運行結果

四、switch語句

基本語法
switch (expression) {    case constant1:        statement1;        break;    case constant2:        statement2;        break;    ...    default:        statementN;        break;}
switch語句的執行過程如下:表達式的值被計算。表達式的值被依次與各個case后的常量進行比較,直到找到與之匹配的常量。如果找到匹配的常量,執行該常量對應的代碼塊,并跳出switch語句。如果沒有找到匹配的常量,執行default對應的代碼塊(如果有),并跳出switch語句。

?switch語句中的case標簽可以是整數、字符或枚舉常量。

每個case標簽必須是唯一的,且必須以冒號(:)結尾。

case后面的代碼塊中可以包含任意數量的語句,用花括號({})來組成代碼塊。

switch語句的default標簽是可選的,它通常放在case標簽的最后面。如果沒有匹配到任何case標簽,那么default標簽下的代碼塊將被執行。

default標簽只能出現一次,且必須放在最后一個case標簽之后,否則會引發編譯錯誤。

switch基礎用法

下面是一個簡單的switch語句示例,用于根據輸入的數字輸出對應的星期幾:
#include < stdio.h >int main() {    int day;    printf("請輸入數字(1-7):");    scanf("%d", &day);    switch (day) {        case 1:            printf("星期一n");            break;        case 2:            printf("星期二n");            break;        case 3:            printf("星期三n");            break;        case 4:            printf("星期四n");            break;        case 5:            printf("星期五n");            break;        case 6:            printf("星期六n");            break;        case 7:            printf("星期日n");            break;        default:            printf("輸入錯誤!n");            break;    }    return 0;}
運行結果

switch高級用法

除了基本用法外,switch語句還有一些高級用法,可以更靈活地使用。

1、case標簽穿透

在switch語句中,如果沒有在一個case語句塊中使用break語句,那么程序會從這個case開始,一直執行到switch語句的結尾,這種現象被稱為case標簽穿透。

下面是一個case標簽穿透的示例:
#include < stdio.h >int main() {    int num = 3;    switch (num) {        case 1:        case 2:            printf("num是1或2n");            break;        case 3:        case 4:            printf("num是3或4n");            break;        default:            printf("num不是1、2、3、4n");            break;    }    return 0;}

在這個示例中,num的值是3,它既符合case 3的條件,也符合case 4的條件,但是由于case 3的語句塊中使用了break語句,所以程序執行完case 3之后就跳出了switch語句,不會繼續執行case 4的語句塊。

運行結果

2、switch語句嵌套

在C語言中,switch語句可以嵌套使用,例如:
#include < stdio.h >int main() {    int num = 1;    switch (num) {        case 1:            printf("num是1n");            switch (num) {                case 2:                    printf("num是2n");                    break;                default:                    printf("num不是2n");                    break;            }            break;        case 3:            printf("num是3n");            break;        default:            printf("num既不是1也不是3n");            break;    }    return 0;}

在這個示例中,switch語句被嵌套使用,內層的switch語句只有在外層的case 1被匹配時才會執行。

運行結果

小結

通過這篇文章,我們學會了

1、if語句

2、if-else語句

3、switch語句

標簽:

上一篇:C語言中賦值運算符詳解
下一篇:最后一頁