1. Find the largest number among three numbers entered by users. The output is as follow: (as an example)
這題目祇是重温C的指令。
以下是其中一個建議的寫法:
說明:
|
行 |
說明 |
|
4 |
由於要輸入3個數字,因此宣告用3個變量(num1,num2及num3)的貯存。並因為這3個數字會讓使用者自行輸入,因此不需要先給予一個預設數值。 |
|
5 |
用來貯存最大值的變量。不過,也不一定要使用的,有其他算法不需要使用變量,但仍能輸出最大值。 |
|
6-10 |
分別讓使用者輸入3個數字,然後貯存於3個變量(variable)內,分別是num1,num2及num3。 |
|
12 |
首先把largest設成是num1的值,即先假設num1是最大的。 |
|
13-14 |
如num2大於largest(即num1)的值的話,便把largest設成是num2的值(largest=num2),否則largest的值便繼續是num1。 |
|
15-16 |
如num3大於largest的值的話,便把largest設成是num3的值(largest=num2),否則largest的值便繼續維持是原來的值,即num1或num2。 |
|
17 |
輸出largest的值,即最大值。 |
但留意,以上的寫法祇是其中一種算法而已,其實有其他算法的。
同學看得明白以上的算法的邏輯嗎?
討論題:
1. 哪一種算法對電腦而言更有效率? (即輸出結果前執行較少程式行數)
2. 哪一種算法更易看得明白?
第三種算法: 祇用一個變量來貯存輸入的數值。
留意: 相同的問題,其實可以又多種不同的算法來解決的。當然,不同的算法有不同的優缺點。同學可看到以上3種算法的優缺點嗎?
判斷的準則是:
1. 執行效率,即那一種更快完成?
2. 容易理解。
3. 佔用記憶體空間。
---------------------
但如果要輸入10個或更多數字的話,以上寫法便很繁複,要宣告10個變量!
如果要輸入100個的話,那豈不是要宣告100個變量?
其實有一種叫陣列(array)的變量形式,可解決此問題。
以下是用陣列變量(array)來撰寫,讓使用者輸入10個數字的程序寫法(如需要更多的話,那祇需要把10換成其他數字便可以。
以上的寫法是否更簡潔? 又可以處理大量數字!
參考文章: 甚麼是陣列變量(array)?