簡單學C——第三天

控制結構(二)spa

    前面咱們已經瞭解到了,控制結構中的判斷結構,固然switch語句也是判斷語句。不過若是if...else...語句你會了,我相信switch語句你也必定會的,它們的功能都是差很少的,只是switch語句在某些時候會讓程序更簡潔一點,此語法請看書自學。code

    下面進入正題。blog

    2.循環語句。編譯器

    在c語言中,循環語句一共有兩種,分別是           1):while循環.                     2):for循環it

    基本語法格式: io

   1):while循環for循環

 //第一種:
  while()  //括號內是判斷語句,如爲假,則不在執行大括號內的內容
  {
      printf("......");
  }
 //第二種:
  do//先執行下面的語句
  {
      printf("......");
  } while();  //注意有一個分號,括號內是判斷語句,如爲假,則再也不上面執行大括號內的內容

第一種與第二種有什麼區別嗎?確定是有的。先記着,第一種至少會運行0次大括號內的類容,第二種至少會運行一次大括號內的類容。下面會解釋的。編譯

      2):for循環class

for(   1  ; 2   ;  3  )
  {
      4
  }

    因爲for循環比while循環複雜一點,因此有必要仔細把它講一下。首先明確此語法在程序中的運行順序基礎

1->2->4->3->2->4->3->2......   若是不結束的話,就會如此循環往復的運行下去,何時結束呢?當3中的判斷語句爲假的時候,for循環就會結束。可能如今講着有點抽象,下面我會用實際的樣例來說清楚循環結構的用法。

    此時的你旁邊有一臺開着編譯器的電腦嗎?

    若是有的話,那麼開始吧.

    很簡單的一道題,在鍵盤中輸入一百的數,而後輸出從1到100之間全部數的和。

    固然,作了兩個數相加(若是你認真看過前面的)的你確定能想到一種笨辦法,它的程序以下 

#include<stdio.h>
int main()
{
    int a;
    //從鍵盤中輸入100
    scanf("%d",&a);
    //省略的內容能補上去吧?我可不想作這麼累的事
    printf("%d",1+2+3+4+...+100);
}

  若是你獨立寫出了上面我沒完成的程序,那麼我只能給你說,你太傻太天真。那麼有什麼方法能夠簡化這個操做呢?機器的優勢,機器擅長作不少重複性的操做,固然計算機也是這樣。而重複性的操做,既是循環。好好理解下面的代碼,看看是如何轉化爲循環性的問題的。

 

#include<stdio.h>
int main()
{
    int a,i,sum=0;
    //從鍵盤中輸入100
    scanf("%d",&a);
    /*i的初始值爲1,每次i都加一,i++與++i的區別本身看看書
    位於中間的i<=a是一個相似if()括號中的判斷,若是i<=a就執行
    大括號中的操做,否則就跳出循環*/
    for(i=1;i<=a;i++)
    {
        sum=sum+i; 
        //sum每次加上一個i的值,i每次都自加一
        //因而就實現了前i個正整數的和
    }
    printf("%d\n",sum); //"\n"爲換行符,之前沒提到過
}

若是理解了上面的程序,那麼繼續往下看吧.

對於每個for()循環,均可以轉換爲while()循環,對於每個while()循環,均可以轉換爲for()循環.下面用while()循環實現上面的程序的功能

#include<stdio.h>
int main()
{
    int a,i,sum=0;
    //從鍵盤中輸入100
    scanf("%d",&a);
    i=1; //i的值從一開始
   while(i<=a)//若是i<=a的時候執行大括號內的操做
    {
        sum=sum+i;
        i++;//i自加一
    }
    printf("%d\n",sum); //"\n"爲換行符,之前沒提到過
}

固然,for() 和while()中能夠有不少實現它的辦法,不過原理老是不會變化的,都是實現一個"累加器"的過程,例如:

//for()循環中的內容能夠放在適當的內容
//來實現一樣的功能
i=1
for(; ; )
{
    sum=sum+i;
    i++;
    if(i==a+1) break;
}
//一樣while()循環也能夠
i=1
while(1)
//1在計算機中表明真,即while循環一直
//爲真,即一直會循環下去,
{
    sum=sum+i;
    i++;
    //當i的值等於a+1時,須要打破這個循環
    if(i==a+1) break;
}

在上面的程序中,出現了 break; 這一語句,它的意思是 跳出/打破 這個循環.在c語言中,還有 contiue; 語句,它的意思是再也不執行下面的語句,繼續運行這個循環語句中的下一個循環.上面兩個都須要在循環中使用.   還有  goto 語句能夠了解一下,比較實用.

 

運行結果:

 

 固然,前面提到的do  ...  while ; 和  while  循環的區別此時你確定已經能理解了,如不能理解,結合文字,或者本身寫寫代碼試試。

上面的程序能理解的話,循環對你應該沒過大的問題了.雖然這很基礎,可是萬變不離其宗.

那好,下面算算前n個正整數,其中的全部的偶數的和吧.

很簡單,就是讓i從0開始,在i不大於a的狀況下,讓i每次都自加2,這樣獲得的結果即爲全部偶數的和了.

相關文章
相關標籤/搜索