| 導購 | 订阅 | 在线投稿
分享
 
 
 

C程序開發初級講座之轉移語句

來源:互聯網  2008-06-01 02:03:23  評論

程序中的語句通常總是按順序方向, 或按語句功能所定義的方向執行的。假如需要改變程序的正常流向, 可以使用本小節介紹的轉移語句。在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);

} 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語句可以使循環語句有多個出口,在一些場合下使編程更加靈活、方便。

C程序開發初級講座之轉移語句
更多內容請看Wlan組網----家庭專題專題,或

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);

}

}

C程序開發初級講座之轉移語句
更多內容請看Wlan組網----家庭專題專題,或

  程序中的語句通常總是按順序方向, 或按語句功能所定義的方向執行的。假如需要改變程序的正常流向, 可以使用本小節介紹的轉移語句。在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); } 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語句可以使循環語句有多個出口,在一些場合下使編程更加靈活、方便。 [url=/bbs/detail_1785259.html][img]http://image.wangchao.net.cn/it/1323424105119.gif[/img][/url] 更多內容請看Wlan組網----家庭專題專題,或   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);  } } [url=/bbs/detail_1785259.html][img]http://image.wangchao.net.cn/it/1323424105161.gif[/img][/url] 更多內容請看Wlan組網----家庭專題專題,或
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有