iT邦幫忙

0

【從零開始的 C 語言筆記】第二十三篇-Switch條件式

  • 分享至 

  • xImage
  •  

不怎麼重要的前言

上一篇介紹了兩個小題目,稍微帶過解題的思路,以及多重迴圈(巢狀迴圈)的概念。

現在我們來試著把所學的東西組合起來看看吧!


上次的小作業--九九乘法表

#include <stdio.h>

int main()
{
    for(int i = 2; i<=9; i++){
        for(int j = 1; j<=9; j++){
            printf("%d x %d = %d\n", i, j, i*j);
        }
        printf("\n");
    }

    return 0;
}

Switch條件式?

大家應該有學過if條件式了,基本上是一個需要判斷式為true才執行的條件式,不曉得大家在寫等同多個不同數值時,要執行不同結果的if條件式,有沒有感覺到疲累感。

如同以下的if條件式:

#include <stdio.h>

int main()
{
    char data;

    printf("plz input a char: ");
    scanf("%c", &data);

    if (data == 'a'){
        printf("mode 1.\n");
    }
    else if (data == 'b'){
        printf("mode 2.\n");
    }
    else if (data == 'c'){
        printf("mode 3.\n");
    }
    else{
        printf("mode default.\n");
    }

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211103/20142565H4NagRQoGS.png

如果是漫長的判斷等同某個數值的if條件式,也可以轉換為這種的switch條件式,雖然這個語法並不是必要學的,但有興趣的話,跑出來的結果也會是一樣的:

#include <stdio.h>

int main()
{
    char data;

    printf("plz input a char: ");
    scanf("%c", &data);

    switch (data){
    case 'a':
        printf("mode 1.\n");
        break;
    case 'b':
        printf("mode 2.\n");
        break;
    case 'c':
        printf("mode 3.\n");
        break;
    default:
        printf("mode default.\n");
    }
    
    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211103/20142565yFGkBdofso.png


正式使用

  1. 規則

(1)基本格式

switch (data){
case 'a':
    printf("mode 1.\n");
    break;
case 'b':
    printf("mode 2.\n");
    break;
case 'c':
    printf("mode 3.\n");
    break;
default:
    printf("mode default.\n");
}

https://ithelp.ithome.com.tw/upload/images/20211103/201425654BrVWfpeyO.png

(2) case的body結尾需補上break用以跳出switch,否則會出現問題。
a. break只會跳出switch條件式,而不執行剩下的。
https://ithelp.ithome.com.tw/upload/images/20211103/20142565mSLKzLwkKe.png

b. 出現錯誤的範例(未加break)

#include <stdio.h>

int main()
{
    char data;

    printf("plz input a char: ");
    scanf("%c", &data);

    switch (data){
    case 'a':
        printf("mode 1.\n");

    case 'b':
        printf("mode 2.\n");

    case 'c':
        printf("mode 3.\n");

    default:
        printf("mode default.\n");
    }

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211103/20142565PH81XLRmAw.png

  1. 應用
    輸入三次成績並判斷成績等級為多少。
    (可以看出在switch內的break只會跳出switch條件式,不會也跳出外面的for迴圈。)
#include <stdio.h>

int main()
{
    int data;

    for(int i = 0; i<3; i++){
        printf("plz input a int: ");
        scanf("%d", &data);

        printf("Case %d: ", i+1);
        switch (data/10){
        case 10:
            printf("A++\n");
            break;
        case 9:
            printf("A\n");
            break;
        case 8:
            printf("B\n");
            break;
        case 7:
            printf("C\n");
            break;
        case 6:
            printf("D\n");
            break;
        default:
            printf("F\n");
        }
    }

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211103/20142565psrmieHCdx.png


看到這裡就介紹完switch條件式的用法了,這是一個比較少使用到的語法,其實不會也沒關係,不過有興趣的話也可以使用看看。

下一篇我們來介紹程式設計的流程圖怎麼寫吧!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言