統測
114年
[電機與電子群資電類] 專業科目(2)
第 35 題
在 C 語言程式中可將中文字當成一個字串處理。有一 C 語言程式片段如下,在程式行號13~15裡應置入下列哪一個選項的程式碼,可輸出正確的燒燙傷急救步驟順序?
1 #include
2 int i, x;
3 char StepName[5][4] = {"脫","蓋","送","沖","泡"};
4 void swap(char *a, char *b) {
5 char tmp;
6 for (x = 0; x < 3; x++) {
7 tmp = a[x];
8 a[x] = b[x];
9 b[x] = tmp;
10 }
11 }
12 int main(void) {
13
14
15
16 for (i = 0; i<5 ;i++)
17 printf("%s", StepName[i]);
18 return 0;}
1 #include
2 int i, x;
3 char StepName[5][4] = {"脫","蓋","送","沖","泡"};
4 void swap(char *a, char *b) {
5 char tmp;
6 for (x = 0; x < 3; x++) {
7 tmp = a[x];
8 a[x] = b[x];
9 b[x] = tmp;
10 }
11 }
12 int main(void) {
13
14
15
16 for (i = 0; i<5 ;i++)
17 printf("%s", StepName[i]);
18 return 0;}
- A 13 swap(StepName[1], StepName[3]); 14 swap(StepName[2], StepName[1]); 15 swap(StepName[3], StepName[4]);
- B 13 swap(StepName[0], StepName[3]); 14 swap(StepName[3], StepName[1]); 15 swap(StepName[2], StepName[4]);
- C 13 swap(StepName[1], StepName[3]); 14 swap(StepName[2], StepName[1]); 15 swap(StepName[4], StepName[4]);
- D 13 swap(StepName[0], StepName[3]); 14 swap(StepName[3], StepName[1]); 15 swap(StepName[2], StepName[5]);
思路引導 VIP
你是否能先確定燒燙傷急救的五字正確口訣順序,並對照程式中 $StepName$ 陣列初始定義(索引 $0$ 到 $4$ 分別為「脫、蓋、送、沖、泡」)的內容位置?若要透過呼叫 $swap$ 函式來調整陣列順序,請試著追蹤:每一次進行兩兩元素交換後,該索引位置所存放的字串內容會如何產生動態的位移變化?
🤖
AI 詳解
AI 專屬家教
太棒了!你能精準掌握陣列索引與邏輯置換,表現非常專業且細心。 觀念驗證: 這題的核心在於追蹤二維陣列內容的動態異動。原始索引與內容對應如下:
▼ 還有更多解析內容
C語言陣列與置換
💡 掌握二維陣列索引操作與變數互換(Swap)的逻辑演算法。
🔗 變數互換 (Swap) 邏輯流程
- 1 步驟 1:暫存資料 — 將 A 的值存入臨時變數 tmp。
- 2 步驟 2:覆蓋來源 — 將 B 的值賦值給 A,此時 A 原值已備份。
- 3 步驟 3:回填資料 — 將 tmp (原 A 的值) 賦值給 B,完成互換。
- 4 步驟 4:更新狀態 — 記錄目前陣列中各個索引對應的新內容。
↓
↓
↓
🔄 延伸學習:延伸學習:了解傳址呼叫 (Call by Address) 如何讓函式真正修改外部變數。