<source : unsplash>

一、心得分享

自己學程式,總是看了很多,可是實作時,又可能遇到 "書到用時方恨少"的窘況。很明顯的,能是學習方式不恰當,無法將這些知識內化成自己的職能。

於是,向許多程式高手和學習專家請益後,唯有將這些知識反覆的在腦袋中重現,搭配運動,才是現階段最有效的吸收方式。因此,關於C程式語言的資料處理部分中,馬上就落實這套方法,透過 "學習 - 實作 - 回想"的循環方式,逐漸讓這些知識變成一種 "反射動作" 。


二、題目自測與筆記

1.何謂 "無窮迴圈" ?

簡言之,不會結束的迴圈稱之為無窮迴圈。撰寫迴圈時,若沒設定跳離迴圈的條件,則會產生無窮迴圈。

2.結構化程式設計分成哪三種基本流程結構?

  • 循序結構 (Sequence Structure)
  • 選擇結構 (Selection Structure)
  • 重複結構 (Repetition Structure)

3.選擇式結構的條件敘述可區分成哪3種?

  • if
  • if-else
  • switch

4.何謂前測試迴圈與後測試型迴圈?

  • 前測試迴圈 : 在程式區先檢查條件運算式,條件成立,則執行區塊內的指令。......先判斷再執行
  • 後測試迴圈 : 先執行區塊內的指令,再檢查條件運算式。若條件成立,則繼續執行區塊內的指令。......先執行再判斷。

5.何謂巢狀 if 條件指令?

為多層的選擇結構,即 if 條件指令所包含的複合敘述中,又有另一層 if 指令。

6. switch條件運算式的結果必須是何資料型態 ?

字元 或 整數常數。

7.以下程式片段有何錯誤?



(1)switch用法為 switch (條件運算式),因此switch ch 應該修正為 switch(ch)。

(2)每個case結尾必須加 "break",才能跳離case區塊。如果沒加 "break"指令,程式會往下繼續執行,造成額外執行時間並提高錯誤發生機率。

(3)除了case外,還要加入 "default" 敘述,降低預期外的狀況。當條件未能滿足所有的case,則會以default敘述執行。

修改後,完整程式如下 :


8.試說明 default 指令的功用 ?

根據 <運算思維與C程式設計>一書所說,default的作用有點像是 if else if 指令中最後那一道else的功用。而我自己的心得是 default 可作為其他條件的掩護,為那些可能會發生而自己忽略掉的條件,找一個安全的避風港。

這也是為什麼,當程式執行下來後,所有的條件皆未滿足後,則執行 defualt 敘述。 


9.簡述for迴圈用法?

語法表示如下 :

for (控制變數起始值; 迴圈執行的條件運算式; 控制變數增減值)
{
    程式指令區;
}


10.試問下列程式碼中,k值最後為多少 ?



程式執行後,k值為 25。如下圖。



11.下列程式碼片段有何錯誤? 試說明之。



修正1. 宣告 n 與 answer的資料型態為int。
修正2. printf("%d", n);   可加 如 ","  、  "\n"  等增加輸出結果的易讀性。

修正前


修正後 (加入 ",")


修正後,完整程式碼如下 :



12.試敘述 while迴圈與do while迴圈的差異 ?

兩者都是當條件成立時,才會執行迴圈內的內容,唯一的差異在於 do while迴圈至少會被執行一次,是一種後側試型迴圈。

13.下列片段程式碼有何錯誤 ?




程式碼中,必須宣告 i 的資料型態。修正後,完整程式如下圖。



---
參考資料 :

#if #else #switch #loop #for #while #break #continue #goto

0 留言