SOGO論壇
  登入   註冊   找回密碼
查看: 932|回覆: 2
列印 上一主題 下一主題

[程式設計] 請問C++ [複製連結]

Rank: 2

狀態︰ 離線
跳轉到指定樓層
1
發表於 2011-9-11 10:05:10 |只看該作者 |倒序瀏覽
請問C++裡面的迴圈
該怎麼使用
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 2

狀態︰ 離線
2
發表於 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訊息給我
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 感謝您熱心幫助會員解決問題,論壇需要您的.

總評分: 威望 + 2   查看全部評分

Rank: 11Rank: 11Rank: 11Rank: 11

熱心參予論壇活動及用心回覆主題勳章 數位硬體勳章

狀態︰ 離線
3
發表於 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,這樣一來比較容易看得懂,二來日後要把程式改用其他程式語言的時候也比較方便。

已有 1 人評分威望 收起 理由
又靜 + 1 感謝您熱心幫助會員解決問題,論壇需要您的.

總評分: 威望 + 1   查看全部評分

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-5-11 12:53

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部