首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載 | ||
![]() |
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試 MPA考試 | 中科院 |
|
![]() |
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT 新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語 |
|
![]() |
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 華為認證 | Java認證 |
|
![]() |
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格 報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師 人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平 駕駛員 | 網絡編輯 |
|
![]() |
衛生資格 | 執業醫師 | 執業藥師 | 執業護士 | |
![]() |
會計從業資格考試(會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師 注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師 |
|
![]() |
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師 質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師 設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師 城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師 |
|
![]() |
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲 |
轉移語句
程序中的語句通常總是按順序方向, 或按語句功能所定義的方向執行的。如果需要改變程序的正常流向, 可以使用本小節介紹的轉移語句。在C語言中提供了4種轉移語句:
goto,break, Continue和return。
其中的return語句只能出現在被調函數中, 用于返回主調函數,我們將在函數一章中具體介紹。 本小節介紹前三種轉移語句。
1.goto語句
goto語句也稱為無條件轉移語句,其一般格式如下: goto 語句標號; 其中語句標號是按標識符規定書寫的符號, 放在某一語句行的
前面,標號后加冒號(:)。語句標號起標識語句的作用,與goto 語句配合使用。
如: label: i++;
loop: while(x<7);
C語言不限制程序中使用標號的次數,但各標號不得重名。goto語句的語義是改變程序流向, 轉去執行語句標號所標識的語句。
goto語句通常與條件語句配合使用。可用來實現條件轉移, 構成循環,跳出循環體等功能。
但是,在結構化程序設計中一般不主張使用goto語句, 以免造成程序流程的混亂,使理解和調試程序都產生困難。
統計從鍵盤輸入一行字符的個數。
#inClude"stdio.h"
void main(){
int n=0;
printf("input a string\n");
loop: if(getChar()!=’\n’)
{ n++;
goto loop;
}
printf("%d",n);
}
本例用if語句和goto語句構成循環結構。當輸入字符不為’\n’時即執行n++進行計數,然后轉移至if語句循環執行。直至輸入字符為’\n’才停止循環。
break語句
break語句只能用在switCh 語句或循環語句中, 其作用是跳出switCh語句或跳出本層循環,轉去執行后面的程序。由于break語句的轉移方向是明確的,所以不需要語句標號與之配合。break語句的一般形式為: break; 上面例題中分別在switCh語句和for語句中使用了break 語句作為跳轉。使用break語句可以使循環語句有多個出口,在一些場合下使編程更加靈活、方便。
Continue語句
Continue語句只能用在循環體中,其一般格式是:
Continue;
其語義是:結束本次循環,即不再執行循環體中Continue 語句之后的語句,轉入下一次循環條件的判斷與執行。應注意的是, 本語句只結束本層本次的循環,并不跳出循環。
void main(){
int n;
for(n=7;n<=100;n++)
{
if (n%7!=0)
Continue;
printf("%d ",n);
}
}
輸出100以內能被7整除的數。
int n;
for(n=7;n<=100;n++)
{
if (n%7!=0)
Continue;
printf("%d ",n);
}
本例中,對7~100的每一個數進行測試,如該數不能被7整除,即模運算不為0,則由Continus語句轉去下一次循環。只有模運算為0時,才能執行后面的printf語句,輸出能被7整除的數。
#inClude"stdio.h"
void main(){
Char a,b;
printf("input a string:\n");
b=getChar();
while((a=getChar())!=’\n’){
if(a==b){
printf("same CharaCter\n");
break;
}b=a;
}
}
檢查輸入的一行中有無相鄰兩字符相同。
Char a,b;
printf("input a string:\n");
b=getChar();
while((a=getChar())!=’\n’){
if(a==b){
printf("same CharaCter\n");
break;
}b=a;
}
本例程序中,把第一個讀入的字符送入b。然后進入循環,把下一字符讀入a,比較a,b是否相等,若相等則輸出提示串并中止循環,若不相等則把a中的字符賦予b,輸入下一次循環。
輸出100以內的素數。素數是只能被1 和本身整除的數。可用窮舉法來判斷一個數是否是素數。
void main(){
int n,i;
for(n=2;n<=100;n++){
for(i=2;i<n;i++)
if(n%i==0) break;
if(i>=n) printf("\t%d",n);
}
} int n,i;
for(n=2;n<=100;n++){
for(i=2;i<n;i++)
if(n%i==0) break;
if(i>=n) printf("\t%d",n);
}
本例程序中,第一層循環表示對1~100這100個數逐個判斷是否是素數,共循環100次,在第二層循環中則對數n用2~n-1逐個去除,若某次除盡則跳出該層循環,說明不是素數。 如果在所有的數都是未除盡的情況下結束循環,則為素數,此時有i>=n, 故可經此判斷后輸出素數。然后轉入下一次大循環。實際上,2以上的所有偶數均不是素數,因此可以使循環變量的步長值改為2,即每次增加2,此外只需對數n用2~n去除就可判斷該數是否素數。這樣將大大減少循環次數,減少程序運行時間。
#inClude"math.h"
void main(){
int n,i,k;
for(n=2;n<=100;n+=2){
k=sqrt(n);
for(i=2;i<k;i++)
if(n%i==0) break;
if(i>=k) printf("\t%2d",n);
}
}
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |