C語言基礎 -18 流程控制 - switch

wesley@wesley-VirtualBox:~/c/CH03$ cat switch.c
#include <stdio.h>
#include <stdlib.h>

int main()
{
        int score;
        printf("Enter a score:[0:100]:");
        scanf("%d",&score);

        if(score < 0 || score > 100)
        {
                fprintf(stderr,"EINVAL\n");
                exit(1);
        }


        switch(score/10)
        {
                case 10:
                case 9:
                        puts("A");
                        break;
                case 8:
                        puts("B");
                        break;
                case 7:
                        puts("C");
                        break;
                case 6:
                        puts("D");
                        break;
                case 5:
                case 4:
                case 3:
                case 2:
                case 1:
                        puts("E");
                        break;
                default:
                        break;
        }
        exit(0);
}


wesley@wesley-VirtualBox:~/c/CH03$ make switch
cc     switch.c   -o switch
wesley@wesley-VirtualBox:~/c/CH03$ ./switch 
Enter a score:[0:100]:99
A
wesley@wesley-VirtualBox:~/c/CH03$ ./switch 
Enter a score:[0:100]:86
B
wesley@wesley-VirtualBox:~/c/CH03$ ./switch 
Enter a score:[0:100]:32
E

稍微簡化上面的程序,將剩餘值同意放到default中 

wesley@wesley-VirtualBox:~/c/CH03$ cat switch1.c
#include <stdio.h>
#include <stdlib.h>

int main()
{
        int score;
        printf("Enter a score:[0:100]:");
        scanf("%d",&score);

        if(score < 0 || score > 100)
        {
                fprintf(stderr,"EINVAL\n");
                exit(1);
        }


        switch(score/10)
        {
                case 10:
                case 9:
                        puts("A");
                        break;
                case 8:
                        puts("B");
                        break;
                case 7:
                        puts("C");
                        break;
                case 6:
                        puts("D");
                        break;
                default:
                        puts("E");
                        break;
        }
        exit(0);
}
wesley@wesley-VirtualBox:~/c/CH03$ make switch1
cc     switch1.c   -o switch1
wesley@wesley-VirtualBox:~/c/CH03$ ./switch1
Enter a score:[0:100]:76
C
wesley@wesley-VirtualBox:~/c/CH03$ ./switch1
Enter a score:[0:100]:32
E
wesley@wesley-VirtualBox:~/c/CH03$ 

無論兩分支還是多分支,程序不許出現意外情況

switch語句內部的case語句,只能跟常量表達式,不具有判斷能力。 如 case a>b:  不會處理判斷語句。

單引號:字符

雙引號:字符串

每一個分支處理後面都應該加break,否則switch語句不會退出當前case語句,造成的結果是,一次性將滿足各自case條件的輸出全部執行一遍,造成邏輯混亂

有限狀態機, 一定會用到case語句。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章