一、編寫一個程序,將輸入的十進制數轉化爲二進制表示。例如:輸入十進制數64,輸出二進制數表示1000000
void deTobi(int a) {
int i = 0, stack[10], r, s;
do {
r = a / 2;
s = a % 2;
stack[i] = s;
if (r != 0) {
++i;
a = r;
}
} while (r);
for (; i >= 0; --i) {
printf("%d", stack[i]);
}
printf("\n");
}
int main(int argc, const char *argv[]) {
int a;
printf("Please input aDecimal digit less than 1023\n");
scanf("%d", &a);
deTobi(a);
return 0;
}
調試運行:
如果只是單純打印我們可以利用遞歸巧妙的打印出某數的二進制,代碼很精簡
void binary(int n) {
if (n / 2) {
binary(n / 2);
}
printf("%d", n % 2);
}
二、遞歸實現二進制轉化爲十進制
#include "math.h"
void biTode2(int n,int *sum,int *m){
char c;
scanf("%c",&c);
if (c!='#') {
*m = *m+1;
biTode2(n+1, &(*sum), &(*m));
}
if(c=='1') *sum=*sum+pow(2, (*m)-n-1);
}
int main(int argc, const char *argv[]) {
int sum = 0,m = 0;
printf("Please input a binary number ending for '#'\n");
biTode2(0, &sum, &m);
printf("The Decimal Decimal digit is \n");
printf("%d ",sum);
return 0;
}
結果: