Examly題庫立即開始練習
國中教甄|資訊科技資訊科技107 年第 14 題單選題
📖 閱讀測驗 · 共用前文
依據下列 C 語言程式,回答第 14 到 16 題。 假設我們編譯這一程式,並將所得之可執行檔案命名為 prob.exe。 #include <stdio.h> // 這是第 1 行 #include <stdlib.h> // 這是第 2 行 typedef int (*funp)(int); // 這是第 3 行 int fun1(int a) {return a+1;}; // 這是第 4 行 int fun2(int a) {return a+2;}; // 這是第 5 行 funp funp2 (int s) { // 這是第 6 行 if(s%2==1) return &fun1; // 這是第 7 行 else return &fun2; // 這是第 8 行 }; // 這是第 9 行 void main(int argc, char **argv) { // 這是第 10 行 int (*prob) (int); // 這是第 11 行 prob = funp2(atoi(argv[1])); // 這是第 12 行 printf(“%d\n”,prob(2)); // 這是第 13 行 } // 這是第 14 行

我們用下列幾種方法執行 prob.exe,何者是正確敘述?(備註:所執行的指令放在雙引號裡面)

A“prob.exe 1” 會看到 4
B“prob.exe 2” 會看到錯誤訊息
C“prob.exe 1+3 3+2” 會看到 5
D“prob.exe 3” 會看到 3正確答案
答案與詳解
D
正確答案
程式把 argv[1] 用 atoi 轉成整數 s:s 為奇數選 fun1(加 1),偶數選 fun2(加 2),最後一律印出 prob(2)。執行「prob.exe 3」時 3 是奇數,印出 fun1(2)=3,所以 D 正確。

為什麼答案是 D

atoi("3")=3,3%2==1 為真,funp2 回傳 &fun1,prob(2)=fun1(2)=3,螢幕印出 3,敘述正確。

載入中…

資訊科技 相關題目

想練更多資訊科技考古題?

Examly 收錄 38 萬+ 道歷屆題目,每題都有像這樣的精選詳解。免費下載,立即開練。

黑皮