#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);
}