1. 程式人生 > >C 循環

C 循環

comment pri ren got blog 多次 += () 循環

C 循環

有的時候,我們可能需要多次執行同一塊代碼。一般情況下,語句是按順序執行的:函數中的第一個語句先執行,接著是第二個語句,依此類推。

編程語言提供了更為復雜執行路徑的多種控制結構。

循環語句允許我們多次執行一個語句或語句組,下面是大多數編程語言中循環語句的流程圖:

技術分享圖片

循環類型

C 語言提供了以下幾種循環類型。點擊鏈接查看每個類型的細節。

循環類型描述
while 循環 當給定條件為真時,重復語句或語句組。它會在執行循環主體之前測試條件。
for 循環 多次執行一個語句序列,簡化管理循環變量的代碼。
do...while 循環 除了它是在循環主體結尾測試條件外,其他與 while 語句類似。
嵌套循環 您可以在 while、for 或 do..while 循環內使用一個或多個循環。

循環控制語句

循環控制語句改變你代碼的執行順序。通過它你可以實現代碼的跳轉。

C 提供了下列的循環控制語句。點擊鏈接查看每個語句的細節。

控制語句描述
break 語句 終止循環switch 語句,程序流將繼續執行緊接著循環或 switch 的下一條語句。
continue 語句 告訴一個循環體立刻停止本次循環叠代,重新開始下次循環叠代。
goto 語句 將控制轉移到被標記的語句。但是不建議在程序中使用 goto 語句。

無限循環

如果條件永遠不為假,則循環將變成無限循環。for 循環在傳統意義上可用於實現無限循環。由於構成循環的三個表達式中任何一個都不是必需的,您可以將某些條件表達式留空來構成一個無限循環。

實例

#include <stdio.h>
 
int main ()
{
   for( ; ; )
   {
      printf("該循環會永遠執行下去!\n");
   }
   return 0;
}

當條件表達式不存在時,它被假設為真。您也可以設置一個初始值和增量表達式,但是一般情況下,C 程序員偏向於使用 for(;;) 結構來表示一個無限循環。

註意:您可以按 Ctrl + C 鍵終止一個無限循環。

筆記列表

  1. 使用 while, for 分別輸 1~100 以內的所有的奇數和偶數的和:

    使用 while:

    #include  <stdio.h>
    
    int main(){
        int  sum=0;
        int  num=1;
        int  sum2=0;
        int  num2=2;
        while(num<100){
            sum=sum+num;
            num=num+2;
        }
        printf("奇數和為:%d\n",sum);
    
        while(num2<=100){
            sum2=sum2+num2;
            num2=num2+2;
        }
        printf("偶數和為:%d\n",sum2);
    }

    使用 for:

    #include  <stdio.h>
    
    int main(){
    
        int  sum=0;
        int sum2=0;
        int num,num2;
        for(num=1;num<100;num=num+2){
            sum=sum+num;
        }
    
        printf("奇數和%d\n",sum);
        for(num2=2;num2<=100;num2=num2+2){
            sum2=sum2+num2;
        }
        printf("偶數和%d\n",sum2);
    }

  2. 用 do while 求算術平方根:

    #include <stdio.h>
    
    double DoSqrt(double z){
        double a=1;
        double b=0;
        double c=0;
        do{
            if(b*b<z){
                b+=a;
            }
            else{
                c=b;
                b-=a;
                a/=10;
            }
        }while(a>0.000001);
    
        return (b+c)/2;
    }
    
    int main(){
        double x, y;
        printf("請輸入一個數字:");
        scanf("%lf", &x);
        if(x<0){
            printf("輸入錯誤。");
        } else {
            y=DoSqrt(x);
            printf("%g 的平方根為: %g.\n", x, y);
        }
    
        int z=1;
        do{
            main();
            z++;
        }while(z>10);
    
        return 0;
    }

  3. 我們看一個簡單的列子,求100以內的素數。

    #include<stdio.h>
    #include<math.h>
    int main(){
        int i,j;
        printf("100以內的素數有:\n");
        for(i=2;i<100;i++){
            for(j=2;j<sqrt(i);j++){
                if(i%j==0){
                break;
                }
            }
                if(j>sqrt(i)){
                printf("%d,\t",i);
                }
        }
    }

    第一個循環裏面。i遍歷從2到100以內的所有數字,第二個循環是在2到sqrt(n)之間看看是不是可以整除i。可以整除則不是素數,相反不可以整除,則是素數。

    int fun(int n){
        for(i=2;i<=sqrt(p);i++){  
                if(x%i==0){
                return 0;  //不為素數
              }
                else{
                return 1; //為素數 
              }
            }
    }

    這個是求素數的關鍵代碼。希望初學者要牢記於心,爛熟於心

C 循環