跳轉至內容

程式設計基礎/實踐:陣列

來自華夏公益教科書,自由的教科書

章節概述

[編輯 | 編輯原始碼]
  • 陣列和列表 - 由元素集合(值或變數)組成的 資料結構。
  • 索引符號 - 通常由方括號 [] 或圓括號 () 表示,索引符號用於標識陣列元素的位置或數值。 [1]
  • 顯示陣列成員 - 要顯示所有陣列成員,請使用 for 迴圈獲取每個元素的值,並使用索引符號和迴圈控制變數輸出該元素。
  • 陣列和函式 - 陣列處理函式通常與陣列以及處理陣列所需的任何資料一起傳遞,以完成給定任務。
  • 陣列中的數學統計 - 統計學是數學的一個分支,它處理資料的收集、組織、分析、解釋和展示。陣列可以儲存單詞、字母/字元(字串)和數字(整數/浮點數),因此陣列和統計學密不可分。
  • 搜尋陣列 - 線性搜尋或順序搜尋是一種在列表中查詢目標值的方法。它依次檢查列表中的每個元素,查詢目標值,直到找到匹配項或搜尋完所有元素。
  • 排序陣列 - 排序演算法是一種演算法,它將列表中的元素按特定順序排列。
  • 並行陣列 - 一組並行陣列是一種隱式資料結構的形式,它使用多個數組來表示單個記錄陣列。
  • 多維陣列 - 指定元素所需的索引數量稱為陣列的維度或維數。
  • 動態陣列 - 動態陣列是隨機訪問的,一種可變大小的列表資料結構,允許新增或刪除元素。

複習問題

[編輯 | 編輯原始碼]

判斷題

[編輯 | 編輯原始碼]
  1. 陣列資料型別是 C++ 中的標準資料型別之一。
  2. 陣列可以有多個維度。
  3. for 迴圈通常用於顯示陣列的成員。
  4. 定義陣列時,最好指定陣列中有多少個成員。
  5. 陣列很少用於表示資料。
  6. 線性搜尋需要複雜的演算法。
  7. 通常會建立函式來搜尋陣列中的最大值和最小值。
  8. 氣泡排序是一種對陣列中的資料進行排列的簡單方法。
  9. 氣泡排序只有一種方法。
  10. 排序陣列很常見。
  11. 一維陣列也稱為表格。
  12. 陣列成員從 1 開始引用。
  13. 如果你不知道某個陣列中要放多少個元素,你應該建立一個靜態陣列。
  14. 如果你想對資料元素執行算術運算,最好使用列表而不是傳統陣列。
  15. 陣列不可能在中間有空值。
  16. 可以從陣列中減去值。

答案

  1. 錯誤
  2. 正確
  3. 正確
  4. 錯誤
  5. 錯誤
  6. 錯誤
  7. 正確
  8. 正確
  9. 錯誤
  10. 正確
  11. 錯誤 - 一維陣列被稱為列表。
  12. 錯誤 - 一些程式語言可能從 1 開始,但對於其他語言,如 Python,陣列成員從 0 開始。
  13. 錯誤
  14. 錯誤
  15. 錯誤 - 動態陣列可以有空值,可以在其中新增或刪除元素。
  16. 正確

簡答題

[編輯 | 編輯原始碼]
  1. 簡要解釋什麼是陣列,並列出與陣列一起使用的兩個常見運算子。
  2. 簡要解釋氣泡排序。
  3. 解釋陣列 push 和陣列 pop 之間的區別。
  4. 描述靜態陣列和動態陣列之間的區別。另外,還應說明你為什麼選擇其中一個而不是另一個。
  5. 簡要解釋變數和陣列之間的區別。
  6. 解釋為什麼排序陣列如此常見。

使用虛擬碼、流程圖工具或你選擇的程式語言完成以下活動。對輸入、每種型別的處理和輸出使用單獨的函式。透過傳遞引數和返回結果來避免全域性變數。建立測試資料以驗證每個程式的準確性。在程式頂部添加註釋,幷包含對所用資源的引用。

定義值陣列

[編輯 | 編輯原始碼]
  1. 檢視 MathsIsFun: 閏年。建立一個程式,其中包含一個定義的陣列,每個條目都是對應月份的天數(一月 = 31,二月 = 28 或 29,具體取決於年份,三月 = 31,等等)。使用一個並行的字串陣列來儲存每個月的名稱。要求使用者輸入年份和月份編號,然後查詢對應的月份名稱和天數,並顯示這些資訊。繼續接受輸入,直到使用者輸入無效年份或無效月份編號。 [2]
  2. 檢視 Wikipedia: Zeller 的同餘式。建立一個程式,要求使用者輸入其生日(年、月和日),然後計算並顯示他們出生的星期幾。使用陣列查詢將星期幾的數字轉換為正確的字串表示形式(星期一、星期二、星期三,等等)。

固定長度陣列

[編輯 | 編輯原始碼]
  1. 檢視 MathsIsFun: 平均值定義。建立一個程式,要求使用者輸入成績。首先詢問使用者他們要輸入多少個分數。然後使用迴圈來請求每個分數,並將它新增到一個靜態(固定大小)陣列中。輸入分數後,計算並顯示輸入分數的最高值、最低值和平均值。
  2. 檢視 Wikipedia: 蒙提霍爾問題。建立一個程式,使用陣列來模擬三個門。使用 0(零)表示山羊,使用 1(一)表示汽車。清除每個“門”,然後使用隨機數函式將數字 1 放入陣列的一個元素中。然後使用隨機數函式隨機選擇三個元素中的一個。在一個迴圈中執行模擬 100 次,以確認 1/3 的獲勝機率。然後再次執行模擬,這次在從剩餘的選擇中刪除 0(山羊)後切換選擇。在一個迴圈中執行模擬 100 次,以確認透過切換獲得 2/3 的獲勝機率。
  3. 如果你的程式語言支援,請使用內建排序函式對上述活動中的成績進行排序,並按從最高分數到最低分數的順序顯示陣列。

動態陣列/列表

[編輯 | 編輯原始碼]
  1. 如果你的程式語言支援,請更新上述成績程式,用動態陣列替換靜態陣列,並在每個專案新增到陣列時擴充套件陣列。繼續接受分數,直到使用者輸入負值。
  2. 請檢視 可汗學院:猜數字遊戲。編寫一個程式,讓使用者在 0 到 100 之間(包含 0 和 100)選擇一個數字。然後讓程式嘗試猜出他們的數字。從中間值 (50) 開始,詢問使用者他們的數字是 (h)igher(更高)、(l)ower(更低)還是 (e)qual(等於)猜測值。如果他們指示更低,則猜測新的中間值 (25)。如果他們指示更高,則猜測新的中間值 (75)。將每次猜測記錄在一個數組中,並繼續有效地猜測更高或更低,直到他們指示等於,然後顯示猜測他們的數字所需的猜測列表,並結束程式。
  3. 如果你的程式語言支援,請使用內建排序函式對上述活動中的成績進行排序,並按從最高分數到最低分數的順序顯示陣列。

參考文獻

[編輯 | 編輯原始碼]
  1. https://wikibook.tw/wiki/Programming_Fundamentals/Index_Notation
  2. Farrell, J. (2015)。程式設計邏輯與設計,入門,第 8 版。Cengage。 ISBN 9781285845777
華夏公益教科書