C语言-十进制/二进制数的互相转化
一、编写一个程序,将输入的十进制数转化为二进制表示。例如:输入十进制数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;
}
结果:
还没有评论,来说两句吧...