题目

十进制转二进制字符串输出

思路

本题把十进制整数转成二进制字符串输出。

n==0 直接输出 0;否则反复取 n%2 压栈或存数组,n/=2 直到为 0,再逆序输出各位。

解题分析

除 2 取余得到二进制位,收集后逆序输出。n==0 输出 0 单独处理。递归写法:先 print(n/2) 再 print(n%2),自然得到正序。

完整程序

#include <stdio.h>

int main(void)
{
    unsigned n;
    if (scanf("%u", &n) != 1) {
        return 1;
    }
    if (n == 0) {
        printf("0\n");
        return 0;
    }
    char bits[33];
    int len = 0;
    while (n) {
        bits[len++] = (char)('0' + (n & 1u));
        n >>= 1;
    }
    while (len--) {
        putchar(bits[len]);
    }
    putchar('\n');
    return 0;
}

运行示例

输入:

13

输出:

1101