2021年5月25日 星期二

單迴圈的變量變化

 變量數值的好好掌握,是撰寫正確程式必要的步驟。電腦系統必然是按程式的撰寫方式順序執行的,不會無故跳行執行的。遇到迴圈及判斷式的語句,電腦

會按指定條件跳至指定行號的執行相關指令。(不是無故的!)

 

以下的一個簡單的例子,讓使用者輸入一個數目字,然後輸入由1至這數目字之間所有數目字。假設輸入5,同學能否掌握電腦執行指令的順序及變量數值的變化。

 


 

以下是答案及相關說明。

 

Line

i

a

說明

5

--

--

剛宣告變量ia,未給予數值。()

6

--

0

a=0; 但這行指令其實不一定需要的,因為反正於第9行,讓使用者輸入後,a的數值必然會被更改的。

7

1

0

i=1; 這行不可漏掉! 改變這數值會影響輸出的數目字。

8

1

0

cout<<”enter the last number”;輸出 enter the last number

9

1

5

cin>>;a讓使用者輸入數值,並貯存於a

10

1

5

迴圈第一句(這迴圈範圍是10,1112)

11

1

5

cout<<i;輸出i的值,即 1

12

2

5

每次執行這迴圈後,把i的值加1(因為第10行內有i++)

10

2

5

第二次執行這迴圈,判斷(i<=a)是否繼續執行下去。這時i2a5,所以繼續下去

11

2

5

cout<<i;輸出i的值,即 2

12

3

5

每次執行這迴圈後,把i的值加1

10

3

5

第三次執行這迴圈,判斷(i<=a)是否繼續執行下去。這時i3a5,所以繼續下去

11

3

5

cout<<i;輸出i的值,即 3

12

4

5

每次執行這迴圈後,把i的值加1

10

4

5

第四執行這迴圈,判斷(i<=a)是否繼續執行下去。這時i4a5,所以繼續下去

11

4

5

cout<<i;輸出i的值,即 4

12

5

5

每次執行這迴圈後,把i的值加1

10

5

5

第五次執行這迴圈,判斷(i<=a)是否繼續執行下去。這時i5a5i仍未較a大,所以繼續下去。

11

5

5

cout<<i;輸出i的值,即 5

12

6

5

每次執行這迴圈後,把i的值加1

10

6

5

第六次執行這迴圈,判斷(i<=a)是否繼續執行下去。這時i6a5。由於不符合(i<=a),因此不再執行迴圈內的指令,而直接跳出迴圈至第13行。

13

6

5

換行。

14

6

5

輸出這時候i的值。注意,這時i6

 

 

: 但留意,實際上ia可能有數值的。

 

[知多一點點]

因為宣告ia後,系統會替每一個變量(variable)自動配置一個記憶體位址(memory address)(同學可當作電腦替每一個變量編配一個臨時貯物箱便可以),但記憶體位址內可能已有數值的,這數值每次皆可能不一樣的。例如以下,宣告ia後,尚未給予指定的數值前(a=0;i=1),便輸出這兩個變量的值。發覺a的記憶體位址原來貯存的是1153796208,而i32767


再執行多一次,這兩個變量的數值又變了。因為每次執行程式時,系統也會重新編置記憶體位址。


如何於C++產生亂數?

 如 何於 C++ 產生亂數 ?   以下是一個例子,輸出一個由 0-4 的亂數。留意,行號 2,3,8,9,10 及 11 是需要的。 備註 : 如要輸出 0-9 的話,把行 11 的 rand()%5 改成 rand()%10 便可以。   -----...