for計次迴圈

今天我們講到for

為什麼這麼晚才做教學

因為我還以為我教過了= =

有關於for的邏輯可以參考這篇

雖然是用vb,不過基本上for迴圈的架構都是如此

for計次迴圈是用來做什麼的

就是讓迴圈能夠按照設計者所需設定執行次數

例如我們要從1加到1000,總不能拿著筆跟紙或是算盤慢慢的算吧

但是只要利用for計次迴圈,不僅速度超快,正確率超高,而且看你想從多少加到多少都可以

for的格式如下:

for (計數植;條件值;增減值)

{

敘述區塊

}

如果for迴圈內只有一行敘述的話,則可簡化成:

for (計數植;條件值;增減值)

敘述式;

舉例:

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

cout << i << endl;

一開始進入for迴圈,i值會等於1

1<=10嗎? 答案是肯定的(1小於10)

所以會繼續執行迴圈內的敘述,也就是輸出i值(1)後再換行

接著,因為增減值為i++,即為i+=1,又如i=I+1,i值加一後再存入i變數

所以當第二次執行迴圈,i=1+1=2

又2<=10是成立的,所以繼續執行迴圈內的敘述,也就是輸出i值(2)後再換行

第三次執行迴圈,i=2+1=3

3<=10成立,執行迴圈內的敘述,也就是輸出i值(3)後再換行

就這樣一直循環到i=10的時候……

i=10,i等於10,所以i<=10成立

然後執行迴圈內的敘述,也就是輸出i值(10)後再換行

第十一次執行迴圈,i=10+1=11

i等於11的話,那i就會大於10,絕對不可能小於或等於10,所以i<=10不成立,立即跳出for迴圈

這時螢幕上就會出現1~10的數字啦!

如果要從1顯示到100要怎麼做呢?

很簡單啊!將條件值改為i<=100就好了

要如何用for來進行1加到1000的連續加法呢?

其實只要會顯示連續數字,你就已經會連續加法了

自己想想看吧!

答:

for (i=1;i<=1000;i++)
x+=i; //這又如同x=x+i
cout << x << endl;

應用練習:連續讓使用者自訂首項和末項,進行公差為1的連續加法,需從小數連續加一並相加,直到大於大數才停止

設計程式前,還是老樣子

打好要用到的函式庫(在此只要用到iostream),和main函數

接著宣告變數,我們需要四個變數(第一個用來當作for的計次變數;第二個用來存放使用者輸入的首項值;第三個用來存放使用者輸入的末項值;第四個為計算值)

變數可以自己取名字,我以i、a、b、x為例

接著讓使用者知道要輸入什麼數據,所以要先用cout說明再用cin讓使用者輸入數字

因為我們並不知道使用者輸入的首項與末項互相的大小(可能首項會大於末項,也可能末項大於首項)

所以還需用if來進行判斷,而且出不同的for迴圈

也有可能使用者輸入的首項等於末項,這樣就沒意義了

所以還需判斷兩數是否相等,關於這點,不需再用一個if去判別,只要寫在else就好了

寫出來的程式碼如下:(其實每個人寫出來的方式都不同,因為每個人的思考邏輯不一樣,不用太在意你寫的程式碼是否跟我寫出來的一樣。總之,程式「可以用」就好)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using namespace std;
 
int main()
{
    int i,a,b,x;
start:
    cout << "請輸入首項和末項(較小的那數將會一直加一並相加,直到大於大數為止):";
    cin >> a >> b;
    if(a<b)  //b比a大
    {
        for (i=a;i<=b;i++) //因為b比a大,所以b當末項,a當首項
            x+=i; //這又如同x=x+i
        cout << x << endl;
    }
    else if(b<a)  //a比b大
    {
        for (i=b;i<=a;i++)  //因為a比b大,所以a當末項,b當首項
        x+=i; //這又如同x=x+i
        cout << x << endl;
    }
    else //如同else if(a==b)
    cout <<  "兩數不能相等!!" << endl;
    system ("pause");
    goto start; //跳到標籤start,讓使用者繼續輸入
    return 0;
}
文章分類:C & C++|標籤:,

迴響已關閉