1. 程式人生 > >switch、break與continue的用法

switch、break與continue的用法

一、switch語句

switch語句格式:

{

case常量表達式1:語句1;

case常量表達式2:語句2;

case常量表達式n:語句n;

default  :語句n+1;

}

需要注意的是:

(一)所有case後面的表示式這能是這幾種情況:1、列舉常量(有些書稱為列舉元素) 2、數值常量 3、字元常量 4、常變數(只能被賦一個值的變數) 5、巨集

(二)switch後面括號裡的“表示式”允許是任何型別(但在VC++中只允許為int或char型別)。

(三)執行完一個case語句後,流程控制就轉移到下一個case語句繼續執行(case常量表達式只是起語句標號的作用,並不是在該處進行條件判斷。在執行switch語句時,根據switch()中表達式的值找到與之匹配的case語句,就從此case語句開始執行下去,不再進行判斷)

例如:

switch (i)

{

case 1: 語句1;

case 2: 語句2;

default: 語句3;

case : 語句4;

}

說明: 當i==1時,從case 1處開始往下一個不落的往下執行,當i==2時,從case 2處開始往下一個不落的往下執行,當i==3時,只執行case 3的語句,當i不等於1,2,3時,會執行defaulr 語句。

(四)switch是選擇不是迴圈。如果在switch中出現了break 語句,該語句的功能只是退出switch語句轉去執行它下面的語句。在switch中出現continue 是錯誤的,除非switch本身就屬於for或while迴圈的一部分。

例1.1:

# include <stdio.h>

int main(void)
{
	int val;

	printf("請輸入您要進入的樓層:");
	scanf("%d", &val);

	switch (val)
	{
	case 1:
		printf("這是一樓!\n");
		break;
	case 2:
		printf("這是二樓!\n");
		break;
	case 3:
		printf("這是三樓!\n");
		break;
	default:
		printf("沒有蓋到這一層!\n");
		break;
	}

	return 0;
}

你輸入1,會輸出“這是一樓!”,輸入2、3回分別輸出“這是二樓!”、“這是三樓!”,當你輸入的不是1或2或3時,會輸出“沒有這個樓層!”。

二、break 語句

break的用法

break如果用於迴圈是用來終止迴圈

break如果用於switch,則是用於終止switch

break不能直接用於if,除非if屬於迴圈內部的一個字句

例2.1:

# include <stdio.h>

int main(void)
{
	switch (1)
	{
	case 1:
		printf("今天天氣不好!\n");
		break;  //這裡break可以用
		printf("真的不好!\n");//這個語句不會執行,因為上面的break已經將switch終止
	}

	return 0;
}
輸出結果為:

例2.2:

# include <stdio.h>

int main(void)
{
    int i;
    for (i=0; i<3; ++i)
    {
	if (3 > 2)
	    break;  //break雖然是if內部的語句,但它終止的卻是外部的for迴圈!!!
	printf("真的不好!\n");  //該語句不會被輸出
    }
    return 0;
}
輸出結果為:

例2.3:

# include <stdio.h>

int main()
{
	int x = 1, y = 0, a = 0, b = 0;
	
	switch(x)    //第一個switch
	{
	case 1:
		switch(y)  //第二個switch
		{
		case 0:
			a++;
			break;//終止的是第二個switch
		case 1:
			b++;
		    break;//終止的是第一個switch
		}
		b = 100;
		break;
	case 2:
		a++;
		b++;
		break;
	}
	printf("a = %d, b = %d\n", a, b);
	
	return 0;
}
輸出結果為:

例2,4:

# include <stdio.h>

int main()
{
	int i, j;

    <span style="white-space:pre">	</span>for (i=0; i<3; ++i)
	{
		for (j=1; j<4; ++j)
		<span style="white-space:pre">	</span>break;   //  在多層迴圈中,<style type="text/css">P { margin-bottom: 0.21cm; direction: ltr; color: rgb(0, 0, 0); text-align: justify; }P.western { font-family: "Times New Roman",serif; font-size: 10pt; }P.cjk { font-family: "宋體"; font-size: 10pt; }P.ctl { font-family: "Times New Roman",serif; font-size: 10pt; }break只能終止最裡面包裹它的那個迴圈</style>break只能終止最裡面包裹它的那個迴圈
		printf("任重而道遠!\n");
	}
	return 0;
}
輸出結果為:

三、continue 語句

continue的用法

1、

for (1; 2; 3)

{

A;

B;

continue;//如果執行continue語句,則執行完該語句後,會執行語句3,C、D會被跳過去,不會被執行

C;

D;

}

2、

while (表示式)

{

A;

B;

continue;//如果執行continue語句,則執行完該語句後,會執行表示式,C、D會被跳過去,不會被執行

C;

D;

}

例3.1:

# include <stdio.h>

int main()
{
	int i;

	i = 0;
	while (i < 3)
	{
		printf("城關東邊和南邊的人比較多!\n");
		printf("城裡人相對較少!\n");
		i++;
		continue;//執行完continue語句後,下面的語句(12行語句)不會被執行
		printf("天還算可以!\n");//12行
	}
	
	return 0;
}
輸出結果為:

例3.2:

# include <stdio.h>

int main()
{
	int i;

	i = 0;
	for (i=1; i<3; ++i)
	{
	printf("城關東邊和南邊的人比較多!\n");
	printf("城裡人相對較少!\n");
	continue;//執行完continue語句後,下面的語句(11行語句)不會被執行
	printf("天還算可以!\n");//11行
	}

	return 0;
}
輸出結果為:

例3.3:

# include <stdio.h>

int main(void)
{
	int i = 0, s = 0;
	do
	{
		if (i%2)
		{
			i++;
			continue;//執行完該語句會跳到14行
		}
		i++;
		s+=i;
	} while(i < 5);//14行

	printf("%d\n",s);

	return 0;
}
輸出結果為;


【所有程式碼均在windows系統下VC++6.0下執行通過】

如有錯誤,敬請指正