2022年3月2日 星期三

Lesson 7 - Assignment

 

1.      Find the largest number among three numbers entered by users. The output is as follow: (as an example)

這題目祇是重温C的指令。

以下是其中一個建議的寫法:

說明:

說明

4

由於要輸入3個數字,因此宣告用3個變量(num1,num2num3)的貯存。並因為這3個數字會讓使用者自行輸入,因此不需要先給予一個預設數值。

5

用來貯存最大值的變量。不過,也不一定要使用的,有其他算法不需要使用變量,但仍能輸出最大值。

6-10

分別讓使用者輸入3個數字,然後貯存於3個變量(variable)內,分別是num1,num2num3

12

首先把largest設成是num1的值,即先假設num1是最大的。

13-14

num2大於largest(num1)的值的話,便把largest設成是num2的值(largest=num2),否則largest的值便繼續是num1

15-16

num3大於largest的值的話,便把largest設成是num3的值(largest=num2),否則largest的值便繼續維持是原來的值,即num1num2

17

輸出largest的值,即最大值。

 

但留意,以上的寫法祇是其中一種算法而已,其實有其他算法的。

 

同學看得明白以上的算法的邏輯嗎?

 

討論題:

1. 哪一種算法對電腦而言更有效率? (即輸出結果前執行較少程式行數)

2. 哪一種算法更易看得明白?

 

第三種算法: 祇用一個變量來貯存輸入的數值。

 

留意: 相同的問題,其實可以又多種不同的算法來解決的。當然,不同的算法有不同的優缺點。同學可看到以上3種算法的優缺點嗎?

判斷的準則是:

1.      執行效率,即那一種更快完成?

2.      容易理解。

3.      佔用記憶體空間。

 

---------------------

但如果要輸入10個或更多數字的話,以上寫法便很繁複,要宣告10個變量!

如果要輸入100個的話,那豈不是要宣告100個變量?

其實有一種叫陣列(array)的變量形式,可解決此問題。

以下是用陣列變量(array)來撰寫,讓使用者輸入10個數字的程序寫法(如需要更多的話,那祇需要把10換成其他數字便可以。

以上的寫法是否更簡潔? 又可以處理大量數字!

 

參考文章: 甚麼是陣列變量(array)?

 

 

如何於C程式內輸入字串?

之前我們學過如何於 C 程式內輸入數目字,但如要輸入字串,例如姓名,又要如何處理呢 ?   跟其他大部分電腦程言不一樣, C 並沒有一個字串的變數數據類型 (variable data type) , C 是使用字元 (character) 及變數陣列 (array)...