题目
十进制转二进制字符串输出
思路
本题把十进制整数转成二进制字符串输出。
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