1. AD

    s[i++]後i已經加1了

  2.  

  3. 7 5 4 3 2 1

    注意 K=6, 所以只有前六個元素會被處理.

  4. 0

    s >> 3 就是 s / 8, 於是得到 416. 至於 ~(~0 << 3) 你得到三個 1, 前面都是0. 所以取 AND 之後,相當於 416 除以 8 所得的餘數(0)。

  5. 92

    首先for迴圈沒有{}包著, 因此sum += i;只會在迴圈結束後執行一次.

    for 迴圈的第一個初始變數陳述句只會執行一次, 之後會進入判斷式,來判斷是否進入迴圈, 第一次進入i=2, 離開時, 再i++, 因此可以得知, 每一次進入迴圈i會遞增2,所以在if (i>90) break; i為92時會跳迴圈.

  6. 5          2          0

  7. 2
    4
    20

    第一行為index offset, 第二行為一個int pointer所佔的大小, 第三行整個vector陣列所佔記憶體的大小(20 Byte=4*5)

  8. 4
    1

    這是「輾轉相除法」求最大公因數,利用到 recursive function call.

  9. Factorial 2 is 2
    Factorial 3 is 6
    Factorial 4 is 24
    Factorial 5 is 120
    Factorial 6 is 208
    Factorial 7 is 176
    Factorial 8 is 128
    Factorial 9 is 128
    Factorial 10 is 0
    Factorial 11 is 0
    Factorial 12 is 0

    這題的 factorial 宣告為 unsigned char (1 Byte), 所以超出的部份要扣掉 2^8=256. (錯一個扣一分)

  10. 322

    這樣的語法是可以的, 可以看課本p.279。