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; } |