摘 要: 在C語言程序設計課程中,break語句有兩個作用:一是應用于switch語句中,可以結束多分支選擇結構;二是應用于循環結構中,可以結束本層循環。通過實例分析出break語句使用的條件,break語句的功能,以及注意事項,明確了break語句的使用方法。
關鍵詞: C語言程序設計; break語句; switch語句; 循環結構
中圖分類號:TP311 文獻標志碼:A 文章編號:1006-8228(2013)12-48-02
Analysis on “break” in course of C language programming
Li Xinran, Zhao Shanlin
(North University of China, College of Computer and Control Engineering, Taiyuan, Shanxi 030051, China)
Abstract: In the course of C language programming, the break statement has two functions. First, it is used in the switch statement, which can end Select Case. Second, it is applied to a loop structure, which can end this layer circulation. By analyzing the examples, the application conditions and functions of the break statement are revealed as well as things to note, and its application methods are clarified.
Key words: C language programming; break statement; switch statement; loop structure
0 引言
在C語言程序設計課程中,break語句的功能非常容易理解,在switch語句中可以利用break語句結束switch結構;在循環結構中可以利用break語句結束循環。但是,很多人并不清楚在什么條件下使用break語句,本文著重分析break語句的使用條件,以及break語句的常見用法。
1 break語句在switch語句中的應用
switch語句是多分支選擇語句,一般形式[1]:
switch(表達式)
{
case 常量表達式1: 語句1; [break;]
case 常量表達式2: 語句2; [break;]
…
case 常量表達式n: 語句n; [break;]
default : 語句n+1; [break;]
}
switch語句執行過程是[2]:
⑴ 計算switch語句表達式的值;
⑵ 依次與1-n個常量做比較,當表達式的值與常量相等時,執行case后的語句;
⑶ 當執行break語句時,結束switch語句;
⑷ 如無break,則從匹配的case語句起,一直執行到break或switch語句末尾為止;
⑸ 如無匹配的case值時,則執行default相應語句。
switch語句說明:
⑴ switch后括號內的表達式可以是任意類型,會自動轉化為整型;
⑵ 每個常量表達式的值必須互不相同;
⑶ 執行完一個case后邊的語句后,轉到下一個case繼續執行,可以用break強制程序在執行完一個case后跳出switch結構。如果所有case中的常量表達式都不符合,則執行default后面的語句;
⑷ case后的多條語句不必用{}括起來。
由此可見,對于break語句的使用,當執行完某個case常量表達式后面的語句,想要結束switch語句,此時應該在相應語句的后面執行break語句。例如:
main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{ case 0: a++; break;
case 1: b++; break;
}
case 2: a++; b++; break;
case 3: a++; b++;
}
printf(“\na=%d,b=%d”,a,b);
}
/*運行結果為:a=2,b=1。*/
分析運行結果,由于case 1:語句中是switch語句的嵌套,而且嵌套的switch語句后面沒有執行break語句。如果在內嵌的switch語句后面執行break語句,則運行結果為:a=1,b=0,此時執行了break語句,就從switch結構中結束了。
2 break語句在循環結構中的應用
在循環結構中使用break語句的形式是“break;”,break語句的功能是強行結束循環,轉向執行循環語句的下一條語句[3]。break執行流程如圖1所示。
[表達式] [表達式] [語句][語句] [break;][yes][no]
圖1 break語句執行流程圖
如圖1所示,當循環中執行了break語句,循環將提前結束。那么在什么樣的條件下,循環結構中需要使用break語句,對此我們通過一個例題,來分析使用break語句的條件。
例題:判斷某一個一位數n是否在一個不高于四位的整數m中出現。判斷n是否在m中出現,需要將n與m中的每一位數進行比較,分離m中的每一位數,可以借助于算數運算符的求余和除,如果n==m%10,說明n在m中出現了,此時需要提前結束循環,這時要使用break語句。如果n!=m%10,那么就需要不斷求新的m,利用m=m/10求得新的m;重復n與m%10的比較過程。通過分析得知,循環結束有兩種可能,一種是n在m中出現了提前結束循環;另一種是n在m中沒出現,當m的值變為0時結束的循環。由于此時不能判斷是什么原因結束的循環,所以我們必須借助于標示變量來區別這兩種情況。先將標示變量flag的值置為1,如果n在m中出現,則標示標量flag的值置為0。如果n沒在m中出現標示變量的值不變,這樣結束循環后,可以通過標示變量的值來判斷n在m中是否出現。
通過上述分析得到循環中使用break語句的條件:當存在著兩個獨立的條件都可以使循環結束時,提前結束循環的條件就是使用break語句的條件;另外一個結束循環的條件作為控制循環的變量。此種用法通常借助標示變量來區別結束循環的原因。使用break語句時候,還需注意break語句只能結束本層循環,不能影響外層循環。
判斷某一個一位數n是否在一個不高于四位的整數m中出現的算法實現如下:
main()
{ int m,n,flag=1;
scanf(\"%d%d\",m,n);
while(m!=0)
{ if(n==m%10)
{ flag=0;
break;
}
m=m/10;
}
if(flag) printf(\"no\n\");
else printf(\"yes\n\");
}
3 結束語
本文分析了C語言程序設計課程中break語句的使用方法。在switch語句中,可以結束多分支選擇結構;在循環結構中,可以結束本層循環。同時分析出在兩種結構中使用break語句的條件,并舉例說明break語句的用法和需注意的要點。通過本文對break語句用法的分析,能讓學習C語言程序設計課程的學生更準確地掌握break語句的用法,為學好結構化程序設計語言的選擇結構和循環結構程序設計打好基礎。
參考文獻:
[1] 譚浩強.C程序設計[M].清華大學出版社,2001.
[2] 趙山林.C語言程序設計[M].人民郵電出版社,2012.
[3] 趙山林.C語言程序設計[M].高等教育出版社,2010.
[4] 姚林.C語言程序設計[M].人民郵電出版社,2010.
[5] 王敬華,林萍.C語言程序設計[M].清華大學出版社,2009.