SOGO論壇

標題: 請問C++ [列印本頁]

作者: 678876    時間: 2011-9-11 10:05:10     標題: 請問C++

請問C++裡面的迴圈
該怎麼使用
作者: zx780411    時間: 2011-9-12 09:58:02



1.For迴圈 (For Loop), For迴圈的特色是對於固定次數 (fixed iterations) 的計算較方便使用.

2.While迴圈 (While Loop)的特色則是架構開放, 對於不固定次數的計算較方便使用.

而For與While迴圈, 都是先檢查條件式再運行, 因此如果條件式本身就不成立的話, 那迴圈就完全不會運行.

3Do-While迴圈 (Do-While Loop)比較特別的就是該迴圈會至少運行一次, 再進行條件式檢查, 當然在這裡聽起來好像沒有什麼特別之處, 但是在某些特定的情況下Do-While迴圈就可以發揮作用


while loop:

while(條件式)
{
}
============================
for loop:

foe(變數定義(設值);條件式;每次loop後要做的事情)
{
}

============================
do while loop:

do
{
}while(條件式)

============================


範例:


for(int i=0;i<5;i++)
{
  printf("=>%d\n",i);
}

============================
int i=0;

while(i<5)
{
  printf("=>%d\n",i);
  i++;
}

============================
int i=0;


do
{
printf("=>%d\n",i);
i++;
}while(i<5)


///////////////////////////////////////////////////////////


總結: loop說穿了只是一個利用condition成立時   簡化了需要不段重複某一些特定動作的function而已
      結構不外乎分成幾個部分:1.loop條件 2.需要重複執行的內容 3.終止條件

PS.有問題就回文或是send訊息給我
作者: mm117777    時間: 2012-6-23 09:55:45

for (起始值; 條件式; 更新值) 指令一;



for (起始值; 條件式; 更新值) {

  指令一;

  指令二;

  指令三;

}

起始值是進入迴圈一開始會執行的動作,而更新值則是執行完每次的迴圈要執行的動作,我們舉個例子來看:

for(i=1; i<=10; i++) printf("%d\n", i);

上面的語法,程式執行的步驟如下:

設定變數 i=1;
檢查 i<=10 是否成立,不成立則跳出迴圈 ( 即跳至 6. )
執行 printf("%d\n", i);
執行 i++; ( 即 i=i+1; )
跳至 2. 的位置
迴圈結束
而在 for 迴圈中,我們同樣可以使用 break 和 continue 指令,再此就不再舉例。如果不需要起始值或更新值,則該欄位可以空白。而如果起始值或更新值有兩個以上,可以用逗點 , 隔開,例如:

for(a=1, b=1; a<=100; a++, b++)

另外,上面提到 i++ 的寫法,在 C 中我們如果要寫 a=a+3 可以簡寫成 a+=3,而 a*=3 同樣就是 a=a*3 的意思,至於 a=a+1 及 a=a-1 在 C 裡面有個更簡短的寫法,就是 a++ 及 a--,另外 ++a 及 --a 也是同樣的意思,至於 ++ 及 -- 寫在前後的差別,則是在於 ++a 是先運算後取值,而 a++ 是先取值後運算。例如:

a=1;

b=1;

c=a++;

d=++b;

printf("%d %d %d %d", a, b, c, d);

上面的例子會印出 2 2 1 2。



二、1+2+...+N 之總合

接下來,我們來看一個典型 for 迴圈的例子,我們用程式來計算 1+2+....+N 之總合,在此假設我們不知道 S= (1+N)*N/2 這個公式,直接用程式讓它從 1 加到 100,整個程式如下:

#include <stdio.h>

void main()

{

int s=0, i;

for(i=1; i<=100; i++) s+=i;

printf("1+2+...+100=%d\n", s);

}

上面的 s 代表總合,一開始是 0,接著每次加上 i 當時的值,而 i 的值會從 1 遞增到 100,最後 s 的值就是 1 加到 100 的總合了。接下來,讓我們用程式計算出 1/1 + 1/2 + 1/3 + ... + 1/100 的總合,和上面不一樣的是,要把 s 改用 float,而 1/i 要改寫成 1.0/i ,這樣它才會被當成 float 來運算。

#include <stdio.h>

void main()

{

int i;

float s=0.0;

for(i=1; i<=100; i++) s+=1.0/i;

printf("1/1+1/2+...+1/100=%f\n", s);

}



三、九九乘法表-多重迴圈的使用:

我們先來寫 2*1= 1 到 2*9=18 的程式:

#include <stdio.h>

void main()

{

int i;

for(i=1; i<=9; i++)

   printf("2*%d=%2d\n", i, i*2);

}

上例的 %2d 代表要以兩格的寬度印出該整數,而 %5.2f 則代表印出小數點後兩位,包括小數點共五格的寬度印出該浮點數,即 5 是總寬度,而小數點後的 2 是小數點後要印出的位數。接下來我們再改成真正的九九乘法表,修改的部分用黃色來表示:

#include <stdio.h>

void main()

{

int i, j;

for(i=1; i<=9; i++) {

   for(j=2; j<=9; j++)

     printf("%d*%d=%2d ", j, i, i*j);

   printf("\n");

}

}

像這樣迴圈裡面又有迴圈的寫法,我們稱為雙重迴圈或多重迴圈。當然,除了 for 裡面有 for 之外,for 裡面也可以用 while,while 裡面也可以用 while 及 for。



四、迴圈敘述的比較:

接下來我們比較 for、while、do-while 三種的用法,首先是 while 及 do-while,while 是先檢查條件是否成立再執行迴圈的指令,而 do-while 則是先執行迴圈的指令再檢查條件是否成立。因此,在一般的情況下,do-while 至少會執行一次迴圈內的指令,而 while 則是不一定會執行到迴圈內的指令。

再來看看 while 及 for,一般說來,while 用在執行次數不固定,直到某個條件成立為止的情況下,而 for 則是用在已知執行次數的情況下,例如在 BASIC 中的 for 寫法如下:

FOR I=1 TO 100

  S=S+I

NEXT I

但是在 C 語言中, for 的第二個欄位也是一個條件值,所以在 C 中, while(條件式) 和 for( ; 條件式; ) 是一樣的。也就是說 while 能做到的,for 都可以做到。只不過我們還是在沒有起始值或是更新值的時候,儘可能使用 while,這樣一來比較容易看得懂,二來日後要把程式改用其他程式語言的時候也比較方便。






歡迎光臨 SOGO論壇 (https://oursogo.com/) Powered by OURSOGO.COM