loop是一個在程式設計中習慣用的語句標號。且長配合goto語句使用。由於現在程式設計不提倡使用goto語句,c中的語句標號也好少用到。另附上goto,break,continue和return用法:=========================================== 程式中的語句通常總是按順序方向,或按語句功能所定義的方向執行的。假如需要改變程式的正常流向,可以使用本小節介紹的轉移語句。在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" voidmain(){ intn=0; printf("inputastring"); loop:if(getchar()!="") { n++; gotoloop; } printf("%d",n); }intn=0; printf("inputastring"); loop:if(getchar()!="") { n++; gotoloop; } printf("%d",n); 本例用if語句和goto語句構成迴圈結構。當輸入字元不為""時即執行n++進行計數,然後轉移至if語句迴圈執行。直至輸入字元為""才停止迴圈。 break語句 break語句只能用在switch語句或迴圈語句中,其作用是跳出switch語句或跳出本層迴圈,轉去執行後面的程式。由於break語句的轉移方向是明確的,所以不需要語句標號與之配合。break語句的一般形式為:break;上面例題中分別在switch語句和for語句中使用了break語句作為跳轉。使用break語句可以使迴圈語句有多個出口,在一些場合下使程式設計更加靈活、方便。 continue語句 continue語句只能用在迴圈體中,其一般格式是: continue; 其語義是:結束本次迴圈,即不再執行迴圈體中continue語句之後的語句,轉入下一次迴圈條件的判定與執行。應注重的是,本語句只結束本層本次的迴圈,並不跳出迴圈。 voidmain(){ intn; for(n=7;n<=100;n++) { if(n%7!=0) continue; printf("%d",n); } } 輸出100以內能被7整除的數。 intn; 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" voidmain(){ chara,b; printf("inputastring:"); b=getchar(); while((a=getchar())!=""){ if(a==b){ printf("samecharacter"); break; }b=a; } } 檢查輸入的一行中有無相鄰兩字元相同。 chara,b; printf("inputastring:"); b=getchar(); while((a=getchar())!=""){ if(a==b){ printf("samecharacter"); break; }b=a; } 本例程式中,把第一個讀入的字元送入b。然後進入迴圈,把下一字元讀入a,比較a,b是否相等,若相等則輸出提示串並中止迴圈,若不相等則把a中的字元賦予b,輸入下一次迴圈。 輸出100以內的素數。素數是隻能被1和本身整除的數。可用窮舉法來判定一個數是否是素數。 voidmain(){ intn,i; for(n=2;n<=100;n++){ for(i=2;i if(n%i==0)break; if(i>=n)printf("%d",n); } }intn,i; for(n=2;n<=100;n++){ for(i=2;i if(n%i==0)break; if(i>=n)printf("%d",n); } 本例程式中,第一層迴圈表示對1~100這100個數逐個判定是否是素數,共迴圈100次,在第二層迴圈中則對數n用2~n-1逐個去除,若某次除盡則跳出該層迴圈,說明不是素數。假如在所有的數都是未除盡的情況下結束迴圈,則為素數,此時有i>=n,故可經此判定後輸出素數。然後轉入下一次大迴圈。實際上,2以上的所有偶數均不是素數,因此可以使迴圈變數的步長值改為2,即每次增加2,此外只需對數n用2~n去除就可判定該數是否素數。這樣將大大減少迴圈次數,減少程式執行時間。 #include"math.h" voidmain(){ intn,i,k; for(n=2;n<=100;n+=2){ k=sqrt(n); for(i=2;i if(n%i==0)break; if(i>=k)printf("%2d",n); } }
loop是一個在程式設計中習慣用的語句標號。且長配合goto語句使用。由於現在程式設計不提倡使用goto語句,c中的語句標號也好少用到。另附上goto,break,continue和return用法:=========================================== 程式中的語句通常總是按順序方向,或按語句功能所定義的方向執行的。假如需要改變程式的正常流向,可以使用本小節介紹的轉移語句。在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" voidmain(){ intn=0; printf("inputastring"); loop:if(getchar()!="") { n++; gotoloop; } printf("%d",n); }intn=0; printf("inputastring"); loop:if(getchar()!="") { n++; gotoloop; } printf("%d",n); 本例用if語句和goto語句構成迴圈結構。當輸入字元不為""時即執行n++進行計數,然後轉移至if語句迴圈執行。直至輸入字元為""才停止迴圈。 break語句 break語句只能用在switch語句或迴圈語句中,其作用是跳出switch語句或跳出本層迴圈,轉去執行後面的程式。由於break語句的轉移方向是明確的,所以不需要語句標號與之配合。break語句的一般形式為:break;上面例題中分別在switch語句和for語句中使用了break語句作為跳轉。使用break語句可以使迴圈語句有多個出口,在一些場合下使程式設計更加靈活、方便。 continue語句 continue語句只能用在迴圈體中,其一般格式是: continue; 其語義是:結束本次迴圈,即不再執行迴圈體中continue語句之後的語句,轉入下一次迴圈條件的判定與執行。應注重的是,本語句只結束本層本次的迴圈,並不跳出迴圈。 voidmain(){ intn; for(n=7;n<=100;n++) { if(n%7!=0) continue; printf("%d",n); } } 輸出100以內能被7整除的數。 intn; 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" voidmain(){ chara,b; printf("inputastring:"); b=getchar(); while((a=getchar())!=""){ if(a==b){ printf("samecharacter"); break; }b=a; } } 檢查輸入的一行中有無相鄰兩字元相同。 chara,b; printf("inputastring:"); b=getchar(); while((a=getchar())!=""){ if(a==b){ printf("samecharacter"); break; }b=a; } 本例程式中,把第一個讀入的字元送入b。然後進入迴圈,把下一字元讀入a,比較a,b是否相等,若相等則輸出提示串並中止迴圈,若不相等則把a中的字元賦予b,輸入下一次迴圈。 輸出100以內的素數。素數是隻能被1和本身整除的數。可用窮舉法來判定一個數是否是素數。 voidmain(){ intn,i; for(n=2;n<=100;n++){ for(i=2;i if(n%i==0)break; if(i>=n)printf("%d",n); } }intn,i; for(n=2;n<=100;n++){ for(i=2;i if(n%i==0)break; if(i>=n)printf("%d",n); } 本例程式中,第一層迴圈表示對1~100這100個數逐個判定是否是素數,共迴圈100次,在第二層迴圈中則對數n用2~n-1逐個去除,若某次除盡則跳出該層迴圈,說明不是素數。假如在所有的數都是未除盡的情況下結束迴圈,則為素數,此時有i>=n,故可經此判定後輸出素數。然後轉入下一次大迴圈。實際上,2以上的所有偶數均不是素數,因此可以使迴圈變數的步長值改為2,即每次增加2,此外只需對數n用2~n去除就可判定該數是否素數。這樣將大大減少迴圈次數,減少程式執行時間。 #include"math.h" voidmain(){ intn,i,k; for(n=2;n<=100;n+=2){ k=sqrt(n); for(i=2;i if(n%i==0)break; if(i>=k)printf("%2d",n); } }