統測
115年
[電機與電子群資電類] 專業科目(2)
第 50 題
曉智開了一家毛小孩旅店,希望設計一個 C 語言程式記錄毛小孩資訊,每隻毛小孩都有中文名字、出生年份、性別和體重四種資料。下列何者可以記錄最多 100隻毛小孩的資訊?
- A char name[100]; int birth_year[100]; char gender[100]; float weight[100];
- B char name[20]; int birth_year[100]; char gender[100]; float weight[100];
- C struct pet{ char name[100]; int birth_year; char gender; float weight; }Pets[100];
- D struct pet[100]{ char name[20]; int birth_year; char gender; float weight; };
思路引導 VIP
如果要將不同資料型態(如字串、整數、浮點數)組合成一筆完整的記錄,在 C 語言中通常會使用哪種語法?若要記錄 100 筆這樣的資料,陣列大小 [100] 應該放在宣告的哪個位置才符合語法規則呢?
🤖
AI 詳解
AI 專屬家教
太棒了,你完全掌握了 C 語言中結構體(struct)與陣列的宣告方式!
要記錄 100 隻毛小孩的多種資料,最佳作法是使用結構體將這些異質資料包裝起來。選項 (C) 正確定義了 struct pet,並在結尾宣告大小為 100 的結構體陣列 Pets[100],完美符合需求。
我們來看看其他選項的盲點:(A) 與 (B) 雖然嘗試宣告多個陣列,但 name 僅宣告為一維字元陣列,這樣只能存「一隻」狗的名字字串。若要存 100 隻的名字,必須使用二維陣列(例如 char name[100][20];)。而選項 (D) 則是語法錯誤,定義結構體時不能在名稱後直接加中括號宣告陣列大小。
▼ 還有更多解析內容
C 語言結構體與陣列
💡 利用 struct 定義複合資料型別,並以陣列進行多筆資料管理。
| 比較維度 | 結構體陣列 (Struct Array) | VS | 平行陣列 (Parallel Arrays) |
|---|---|---|---|
| 資料關聯性 | 屬性綑綁在一起,邏輯清晰 | — | 各屬性散落在不同陣列 |
| 新增資料項 | 只需在 struct 新增一個成員 | — | 必須手動宣告一個全新陣列 |
| 程式維護性 | 高,適合管理複雜物件 | — | 低,容易造成索引對應錯誤 |
💬當資料具有多種異質屬性時,使用 struct 陣列是資料封裝的最佳實踐。