合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、题目描述 ⭐️
裁判测试程序样例:
#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); // 输出当前位
}