程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 簡單學C——第三天,第三天

簡單學C——第三天,第三天

編輯:關於C語言

簡單學C——第三天,第三天


控制結構(二)

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

    下面進入正題。

    2.循環語句。

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

    基本語法格式: 

   1):while循環

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

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

      2):for循環

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,這樣得到的結果即為所有偶數的和了.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved