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下執行通過】
(如有錯誤,敬請指正)