【C-迴圈結構】

來源:互聯網
上載者:User

標籤:

C語言提供了多種迴圈語句,可以組成各種不同形式的迴圈結構:

  • 用goto語句和if語句構成迴圈;
  • 用while語句;
  • 用do-while語句;
  • 用for語句;

一、goto語句

goto語句是一種無條件轉移語句,與BASIC中的goto語句相似。goto 語句的使用格式為:
     goto  語句標號;

其中標號是一個有效標識符,這個標識符加上一個“:”一起出現在函數內某處,執行goto語句後,程式將跳轉到該標號處並執行其後的語句。

goto語句通常不用,主要因為它將使程式層次不清,且不易讀,但在多層嵌套退出時,用goto語句則比較合理。

二、while

while語句的一般形式為:
    while(運算式) 語句
其中運算式是迴圈條件,語句為迴圈體。
while語句的語義是:計算運算式的值,當值為真(非0)時, 執行迴圈體語句。

練習:統計從鍵盤輸入一行字元的個數。

  1. #include <stdio.h>
  2. int main(void){
  3. int n=0;
  4. printf("input a string:\n");
  5. while(getchar()!=‘\n‘) n++;
  6. printf("%d",n);
  7. return 0;
  8. }

三、do...while

do-while語句的一般形式為:
    do
        語句
    while(運算式);
這個迴圈與while迴圈的不同在於:它先執行迴圈中的語句,然後再判斷運算式是否為真,如果為真則繼續迴圈;如果為假,則終止迴圈。因此,do-while迴圈至少要執行一次迴圈語句。

四、for

在C語言中,for語句使用最為靈活,它完全可以取代 while 語句。它的一般形式為:
    for(運算式1; 運算式2; 運算式3)  語句
它的執行過程如下:

  1. 先求解運算式1。
  2. 求解運算式2,若其值為真(非0),則執行for語句中指定的內嵌語句,然後執行下面第3)步;若其值為假(0),則結束迴圈,轉到第5)步。
  3. 求解運算式3。
  4. 轉回上面第2)步繼續執行。
  5. 迴圈結束,執行for語句下面的一個語句。

注意:
1) for迴圈中的“運算式1(迴圈變數賦初值)”、“運算式2(迴圈條件)”和“運算式3(迴圈變數增量)”都是選擇項,即可以預設,但分號(;)不能預設。

2) 省略了“運算式1(迴圈變數賦初值)”,表示不對迴圈控制變數賦初值。

3) 省略了“運算式2(迴圈條件)”,則不做其它處理時便成為死迴圈。

4) 省略了“運算式3(迴圈變數增量)”,則不對迴圈控制變數進行操作,這時可在語句體中加入修改迴圈控制變數的語句。

5) 省略了“運算式1(迴圈變數賦初值)”和“運算式3(迴圈變數增量)”。

6) 3個運算式都可以省略。例如:
    for( ; ; )  語句
相當於:
    while(1)  語句

7) 運算式1可以是設定迴圈變數的初值的賦值運算式,也可以是其他運算式。

8) 運算式1和運算式3可以是一個簡單運算式也可以是逗號運算式。

9) 運算式2一般是關聯運算式或邏輯運算式,但也可是數值運算式或字元運算式,只要其值非零,就執行迴圈體。

 

五、break 跳出迴圈

break語句通常用在迴圈語句和開關語句中。當break用於開關語句switch中時,可使程式跳出switch而執行switch以後的語句;

當break語句用於do-while、for、while迴圈語句中時,可使程式終止迴圈而執行迴圈後面的語句,通常break語句總是與if語句聯在一起,即滿足條件時便跳出迴圈。

六、continue  結束本次迴圈

ontinue語句的作用是跳過迴圈體中剩餘的語句而強行執行下一次迴圈。continue語句只用在for、while、do-while等迴圈體中,常與if條件陳述式一起使用,用來加速迴圈。

 

練習:求100至200間的全部素數。

  1. #include <stdio.h>
  2. #include <math.h>
  3. int main(void){
  4. int m,i,k,n=0;
  5. for(m=101;m<=200;m=m+2){
  6. k=sqrt(m); // m 的開方
  7. for(i=2;i<=k;i++)
  8. if(m%i==0) break;
  9. if(i>=k+1){
  10. printf("%d\n",m);
  11. n=n+1;
  12. }
  13. }
  14. printf("\n");
  15. return 0;
  16. }

練習2:用下面的公式求π:

分析:首先,係數為正數的項的分母是4n-3(n為正數項的項數),為負數的項的分母為4n-1(n為負數項的項數),即分母的變化規律是1、3、5、7...的奇數數列,則第n項的分母為2n-1,第10000項的分母為2*10000-1。

  1. #include <stdio.h>
  2. #include <math.h>
  3. int main(void)
  4. {
  5.     double p=0,j=1;
  6.     int i;
  7.     for( i=1;i<10000;i++ )  //此處i為項數
  8.     {
  9.         j=pow(-1.0,i+1)/(2*i-1);  //pow(x,y)求x的y次冪
  10.         p+=j;
  11.         printf("%lf\n",4*p);  //輸出每一項的值
  12.     }
  13.     printf("%lf\n",4*p);  //輸出最終pi值
  14.     return 0;
  15. }

 

【C-迴圈結構】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.