阿摩線上測驗 登入

申論題資訊

試卷:100年 - 100年高等三級暨普通考普通_資訊處理#29521
科目:程式設計
年份:100年
排序:0

題組內容

四、

申論題內容

⑶ C函式 mystery 內容如下,請描述 mystery 的功能為何?(6 分)
void mystery (int n)
{ if (n !=0)
{ mystery (n/2);
putchar('0'+n%2);
}
return;
}

詳解 (共 1 筆)

詳解 提供者:hchungw
這個 C 函式 mystery 是一個遞迴函式,其功能是打印一個正整數 n 的二進位表示。
這是它是如何工作的:
函式首先檢查 n 是否不等於 0。這是遞迴的終止條件。如果 n 為 0,則函式不做任何操作並返回。
如果 n 不是 0,函式遞迴調用自身,參數為 n 除以 2 的結果(也就是說,n 向右移一位,或者說是 n 的二進位表示去掉最後一位)。
然後,函式使用 putchar 函式打印出 n 除以 2 的餘數加上字符 '0'(也就是說,打印出 n 的二進位表示的最後一位)。
通過這種方式,mystery 函式從最高有效位到最低有效位打印出 n 的二進位表示。遞迴的順序確保了二進位數被正確地從高位到低位打印出來。
舉例來說,如果 mystery 被調用為 mystery(10),輸出將會是 1010,因為 10 的二進位表示是 1010。