合抱之木,生于毫末;九層之臺,起于累土;千里之行,始于足下。💪🏻
一、題目描述 ??
裁判測試程序樣例:
#include <stdio.h>void dectobin( int n );int main()
{int n;scanf("%d", &n);dectobin(n);return 0;
}/* 你的代碼將被嵌在這里 */
輸入樣例
10
輸出樣例
1010
二、解題思路 ??
三、代碼(C語言)??
方法一、非遞歸實現 🍭
void dectobin(int n) {if (n == 0) { // 如果輸入的整數 n 為 0printf("0"); // 直接輸出 "0",因為 0 的二進制表示就是 0return; // 結束函數}int numArr[255]; // 定義一個數組 numArr,用于存儲二進制數的每一位(最大支持 255 位)int cnt = 0; // 定義一個計數器 cnt,用于記錄二進制數的位數while (n != 0) { // 當 n 不為 0 時,循環計算二進制位numArr[cnt] = n % 2; // 將 n 對 2 取余的結果(0 或 1)存入數組 numArrcnt++; // 計數器 cnt 加 1,表示二進制位數增加n /= 2; // 將 n 除以 2,繼續計算下一位}for (int i = cnt - 1; i >= 0; i--) { // 從最高位到最低位遍歷數組 numArrprintf("%d", numArr[i]); // 輸出當前位的值(0 或 1)}
}
方法二、遞歸實現 🍭
void dectobin(int n) {if (n > 1) {dectobin(n / 2); // 遞歸調用,處理高位數}printf("%d", n % 2); // 輸出當前位
}
?