2022年1月25日 星期二

Lesson 4 Assignment (Suggested answer)

 Lesson 4 Assignment

 

重要提示: 以下作業主要是學習如何使用條件式判斷(if..else),根據不同狀況,輸出不同的結果:

 

Assignment(1)

Write a C program. The output is as follows:

If the number you entered is greater than 9, the output is as follows:

If the number entered is smaller than 9, the output is as follows:

 

要進行條件式判斷,需要使用以下指令(if ...else):

        if (條件式判斷){

                指令敍述;

        }

        else{

                指令敍述;

        }

 

建議程式如下:

說明:

1. 留意第8行條件判斷的寫法格式,(num>9),代表 num這個變數值大於9

        if (num>9) 的意思是如果 num這個變數值大於9的話,那便執行之後{ }內的指令,否則便執行else{ }內的指令。

 

備註: 不過同學是否疑惑,假如輸入的是9的話,輸出是甚麼?

 

其實輸出如下,但輸出結果好像有點奇怪,因為9並不是少於9!

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

Assignment(2)

Write a C program to judge whether a mark you entered represent "passed" or

"failed" (The passing mark is 60)

If 60 or above is entered, the output is as follows:

If below 60,the output is as follows:

這題跟上題差不多而已,建議答案如下:



說明:

1. 這題目不作程式說明了,因為跟第1題差不多。反而要說明一下撰寫完成後,應如何測試程式輸出的正確性? 因為如語法正確的話,其實電腦是不會知道其他邏輯上的錯誤。

2. 如上題,關建分數是60,因此最理想的是用3個分數測試,一是60,一是少於60而最後一個是大於60。如下:

 




3個測試數值輸出的結果皆正確的話,那程式便是正確的了。

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

Assignment (3)

Write a C program to output the following Grade according to the table below:

Mark range

Grade

0-59

C

60-75

B

>75

A

 

很明顯,這題目並不能祗用一個if...else,因為這樣祇能有兩個選擇,但以上有三個情況出現,究竟可以如何處理?

 

以下是不同的方法:

 

建議答案(1): 仍是使用if ...else...不過是多一個層次而已,看得明白以下程式的邏輯嗎?

 



說明:

1. 8行,如果大於75的話,便輸出A

2. 11行,如不是大於75,即一定是0-75。這數值範圍內,如等於或大於60的話,便輸出B

3. 15行,不大於75,也不大於或等於60的話,便輸出C(留意,並沒有列出0-59,但實際上不大於75,也不大於或等於60的話,其實即是0-59的數值了。

4. 用甚麼數值來測試程式是否正確?

 

備註: 看得明白以上程式的寫法嗎? 如真的明白的話,試試根據下表撰寫另一程式:

Mark range

Grade

0-39

F

40-49

E

50-59

D

60-69

C

70-80

B

>80

A

 

以下程式祇是想說明,如果if else後祇有一句指令的話,其實{ } 是可以省略的。



 

建議答案(2)

 

建議答案(1)的寫法直覺上有點難理解,撰寫時可不可以狀似以下表格的表達方式:

Mark range

Grade

0-59

C

60-75

B

>75

A

如下: 是否較易理解? 但語法卻是錯誤的!



說明:

1. C語言中,不能用and (有些語言會用)and是用這個符號&&取代的,如下:



備註: 不過留意,以上的寫法其實執行效率是較低的! 因為程式一定要執行3個判斷的指令。

沒有留言:

張貼留言

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

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