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個判斷的指令。







