1. 程式人生 > >switch語句(初學者)

switch語句(初學者)

C語言提供了另一種用於多分支選擇的switch語句(常用於開關),一般形式為:

switch ( 常量表達式 ) { case 常量1 :語句; case 常量2 :語句; case 常量3 :語句; ... case 常量n:語句; default :語句; } 語義:計算常量表達式的值,並逐個與其後的常量值相比較,當表示式的值與某個常量值相等時,即執行其後語句,然後不再進行判斷,繼續執行後面所有case後的語句。若表示式的值與所有case後的常量值均不同時,則執行default語句。 錯例:
#include<stdio.h>

void
main() { int a; printf("input integer number:"); scanf("%d",&a); switch(a) { case 1:printf("Monday\n"); case 2:printf("Tuesday\n"); case 3:printf("Wednesday\n"); case 4:printf("Thursday\n"); case 5:printf("Friday\n"); case 6:printf("Saturday\n");
case 7:printf("Sunday\n"); default:printf("error\n"); } }

為避免上述輸出時出現的情況,C語言提供了一種break語句,專用於跳出switch語句,break語句只有關鍵字break,沒有引數。

正例:

#include<stdio.h>

void main()
{
    int a;
    printf("input integer number:");
    scanf("%d",&a);
    switch(a)
    {
    case 1:printf("
Monday\n");break; case 2:printf("Tuesday\n");break; case 3:printf("Wednesday\n");break; case 4:printf("Thursday\n");break; case 5:printf("Friday\n");break; case 6:printf("Saturday\n");break; case 7:printf("Sunday\n");break; default:printf("error\n");break; } }

注意:(1)在case後的各常量表達式的值不能相同,否則會出現錯誤。

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

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

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

(5)只能針對基本資料型別中的整型型別使用switch,這些型別包括int、char等。對於其他型別,則必須使用if語句。

(6)switch()的引數型別不能為實型 。 (7)case標籤必須是常量表達式(constantExpression),如42或者"42"。 例:
#include<stdio.h>
int main()
{
    char rank;
    printf("請輸入分數等級:(A、B、C、D、E)\n");
    scanf("%c",&rank);
    switch(rank)    
    {
        case'A':printf("A(90~100)\n");break;
        case'B':printf("B(80~89)\n");break;
        case'C':printf("C(70~79)\n");break;
        case'D':printf("D(60~69)\n");break;
        case'E':printf("E(0~59)\n");break;
        default:printf("error!\n");break;
    }