<source : unsplash>

一、心得分享

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

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

二、題目自測與筆記

1.C語言中,函數(亦稱函式,英文為function)可區分哪兩種 ?

  • 系統本身提供的公用函數庫
  • 自訂函數

2. return的功用為何 ?

return 陳述式可終止函式的執行,並且將控制權還給呼叫函式。 執行作業會在進行呼叫的函式中緊接著呼叫之後繼續進行。 return 陳述式也可將值傳回至呼叫函式。<From microsoft>

3.函數式結構化語言下的產物,它是由許多敘述所組成,主要目的有哪兩種 ?

  • 提高程式碼的可讀性
  • 利於程式專案規劃

4.自訂函數是由哪些元素組成 ?

基本架構如下 :

函數型態 函數名稱(資料型態 參數1, 資料型態 參數2, ...)
{
         程式指令區;

          return 回傳值;
}

5.以下程式有誤,請修正 ?



錯誤處為
  • 未於main函式前先宣告自訂函式
  • 自訂函式未宣告資料型態

修改處為
  • 於第12行宣告自訂函式。
  • 於第20行更新為帶資料型態的函示。

更正後的程式碼如下,值為 14.8。


6.函數原型的宣告位置有哪兩種 ?

  • 通常位於 #include指令 與 main()之間。
  • 也可放在main()函數中。

7.簡述傳值呼叫 (call by value)的功用與特性 ?

  • 功用 : 呼叫函數時,會將引數的值一一地複製給函數的參數,因此在函數中對參數的值做任何更動,都不會影響到原來的引數。
  • 特點 : 不會更動原先主程式中呼叫的變數內容。

8.傳址呼叫時,要加上哪兩個運算子 ?

傳址呼叫表示呼叫函數時,所傳遞給函數的參數值是變數的記憶體位置。若要進行傳址呼叫,必須宣告指標變數作為函數的引數。

傳址呼叫的參數,宣告時要加上 "  *  "運算子,而呼叫函數的引數前,必須加上 "  &  "運算子。

9.簡述遞迴函數的意義與特性 ?

  • 意義 : 函數是由自身所定義或呼叫的。
  • 特性 : 至少要定義兩種年鑑,包括可以反覆執行的遞迴過程,與一個跳出執行過程的出口。

10.何謂尾歸遞迴(Tail Recursion) ?

程式的最後一個指令為遞迴呼叫,因為每次呼叫後,再回到前一次呼叫的第一行指令就是 return,所以不需再進行任何計算工作。

11.簡述動態規劃法與分治法的差異 ?

動態規劃法是分治法的延伸。多了使用記憶機制,將處理過的子問題答案記錄下來,避免重複計算。

12.簡述分治法的核心精神 ?

將一個難以直接解決的大問題,依照不同的概念,分割成兩個或更多子問題,以便各個擊破,分而治之。


---

參考資料 :


#函式 #return #遞迴 #分治法 #動態規劃法 #傳址呼叫 #傳值呼叫


0 留言