#include <stdio.h>
#define NR (sizeof(int)*8)
void deciToBin(int num);
int main(void)
{
int num;
fprintf(stdout, "请输入一个正整数:");
while (1)
{
if (fscanf(stdin, "%d", &num) != 1)
{
fprintf(stderr, "输入错误!请重新输入:");
while (getchar() != '\n');
continue;
}
else if (num < 0)
{
fprintf(stderr, "请输入错误!请输入正整数:");
continue;
}
else
break;
}
fprintf(stdout, "对应二进制为:");
#if 1
char bitArr[NR];
int i = -1;
do {
i += 1;
bitArr[i] = num % 2;
num /= 2;
} while (num != 0);
for (i ; i >= 0; i--)
{
fprintf(stdout, "%d", bitArr[i]);
}
fputc('\n', stdout);
#else
if (num == 0)
{
fprintf(stdout, "0\n");
}
else
{
deciToBin(num);
fputc('\n', stdout);
}
#endif
return 0;
}
void deciToBin(int num)
{
if (num == 0)
{
return;
}
deciToBin(num/2);
fprintf(stdout, "%d", num%2);
}