close
還在煩惱怎麼考APCS程式檢定嗎?送你觀念.實作題大禮包!
新手上路報考 APCS 程式,第一次應該從哪個程式語言才會事半功倍呢?
此篇你將了解...
先來了解一下檢測內容的基礎概念,APCS 的兩大題組 【觀念題】與【實作題】
程式設計觀念題
觀念題例題#1
1. 右側程式碼,執行時的輸出為何?
void main() { for (int i=0; i<=10; i=i+1) { printf ("%d ", i); i = i + 1; } printf ("\n"); }
(出自 105 年 3 月 5 日,理論題第 15 題)
這一題主要要測驗的內容,是考驗考生是否了解 C 語言當中, for 迴圈的結構。
以 for 迴圈來說,三的區段的值分別是初始值、條件值、運算值。
在這一題當中,第一次執行的時候 i 為 0 ,所以會先印出 0。
接下來,由於第四行 i=i+1 的關係, i 會變為 1 。但是執行迴圈時,回到了 for 的第三部分,這時候,還是另外一次的 i=i+1 ,所以 i 變為 2,然後進行驗證, i <= 10
根據這樣的執行邏輯, i 每印出一個就會 +2 一次,直到 i 超過 10 之後跳出迴圈。
Ans:所以會印出「0 2 4 6 8 10」
觀念題例題#2
2. 若以 f(22)呼叫右側 f()函式,
總共會印出多少數字?
void f(int n) { printf ("%d\n", n); while (n != 1) { if ((n%2)==1) { n = 3*n + 1; } else { n = n / 2; } printf ("%d\n", n); } }
(出自 105 年 3 月 5 日,理論題第 21 題)
本題所考內容,是對於 while 與 if 的熟悉度。
傳入 22 進 function 之後,會先印出 22。
接下來進入 while 迴圈,如果 n 不是 1 ,那麼這個迴圈會一直執行。
while 當中, 如果 n 是奇數,則 n 會變成 3xn+1 ,如果 n 是偶數,那 n 會變成原來的一半。
所以整個流程會是「22➔11➔34➔17➔52➔26➔13➔40➔20➔10➔5➔16➔8➔4➔2➔1」。
Ans:所以答案是 16 個。
文章標籤
全站熱搜
留言列表