首頁 > 軟體

C語言範例講解switch分支語句的用法

2022-06-13 18:01:03

1、瞭解switch分支語句

switch語句也是一種分支語句,常常用於多分支的情況。

比如:

輸入1,就會輸出星期一

輸入2,就會輸出星期二

輸入7,就會輸出星期七

對於這樣的程式碼需求,如果用if 、else if、else的形式就會顯得太複雜。如何用switch語句實現該功能呢?switch語句的結構又是怎樣的呢?

switch(整型表示式)
{
    語句項;
}

其中,整型表示式必須為整型,且為常數(字元也可以,因為字元也屬於是整型的一種,因為字元儲存的時候用的是字元的ASCII碼值);語句項是一些case語句。

case 整型常數表示式;
    語句;

程式碼實現:

int main()
{
	int day = 0;
	scanf("%d",&day);
	switch (day)
	{
	case 1:
		printf("星期一n");
	case 2:
		printf("星期二n");
	case 3:
		printf("星期三n");
	case 4:
		printf("星期四n");
	case 5:
		printf("星期五n");
	case 6:
		printf("星期六n");
	case 7:
		printf("星期日n");
	}
	return 0;
}

執行該程式碼,發現執行之後得到的結果如下:

1
星期一
星期二
星期三
星期四
星期五
星期六
星期日

顯然,這樣的結果是不對的。因為執行完case 1 之後,沒有東西阻止它,它就會一直case 2、case 3…地執行下去。若在程式執行的時候,輸入的是6,就會輸出 星期六星期日。switch後面的表示式(day)是幾,它就會從case 幾進去,決定入口的是表示式day的值以及case後面的值。

修改程式:在每個case後面加上break,以此來跳出case。

case決定的是入口,而break決定的是出口,這才實現了真正的分支。

2、範例

輸入1-5就輸出工作日,輸入6-7就輸出休息日。

int main()
{
	int day = 0;
	scanf("%d",&day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日n");
		break;
	case 6:
	case 7:
		printf("休息日n");
		break;
	}
	return 0;
}

測試執行結果如下:

5
工作日

break語句的實際效果是把語句列表劃分為不同的部分。

有一個程式設計好習慣:在最後一個case語句的後面也加上一條break語句。萬一之後要在原先程式的基礎上再加上一些其它case語句,不至於出現上面的輸入1,一下子星期一到星期天全部列印出來的情況。

3、default子句

如果表達的值與所有的case標籤的值都不匹配怎麼辦?其實也沒什麼,結果就是所有的語句都被跳過而已,程式並不會終止,也不會報錯。因為這種情況在C語言中並不認為是錯誤,但是,如果並不想忽略不匹配所有標籤的表示式怎麼辦?這時候就可以在語句列表中增加一句default子句,將其寫在任何一個case標籤可以出現的位置。

當switch表示式的值並不匹配所有case標籤的值時,這個default子句後面的語句就會執行。注意:每個switch語句中只能出現一條default子句。

int main()
{
	int day = 0;
	scanf("%d",&day);
	switch (day)
	{
	default:
		printf("輸入錯誤n");
		break;
	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;
	}
	return 0;
}

測試結果:

9
輸入錯誤

4、練習

看程式執行的結果是多少?

int main()
{
	int n = 1;
	int m = 2;
	switch (n)
	{
	case 1 :
		m++;
	case 2:
		n++;
	case 3:
		switch (n)
			//switch可以巢狀使用
		{
		case 1:
			n++;
		case 2:
			m++;
			n++;
			break;
		}
	case 4:
		m++;
		break;
	default:
		break;
	}
	printf("m=%d,n=%dn",m,n);
	return 0;
}

主要就是考察switch裡面的break的作用。

最終的執行結果如下:

m=5,n=3

到此這篇關於C語言範例講解switch分支語句的用法的文章就介紹到這了,更多相關C語言switch分支內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com