输入二进制数,输出与之对应的十进制
(思路:因为不能直接让计算机将我输入的数字当做二进制数,所以只能输入一个伪二进制的十进制数,比如10101,然后一位一位的拆解,同时给它们换座位(本来是乘十的就成2,乘100的就乘4,依次类推….最后再加起来。
整个的步骤可以总结为:除权拆解,加权重组。)
# include <stdio.h>
#include <math.h>
void main(){
int k = 1,m = 1,n = 1, i = 1,x = 1,y = 1,j = 1,sum = 0;
printf("任意输入一位二进制数: ");
scanf("%d",&i);
getchar();
for( n = 0;i/k >0;n++){
k *= 10;
}
printf("\n您输入的二进制数总共有: %d位",n);
for(j = n - 1;j >= 0;j--){
x = pow(2,j);
y = pow(10,j);
sum += (i/y)*x;
i = i%y;
}
printf("\n\n它对应的十进制数是: %d",sum);
getchar();
}
待优化的部分:
当输入的数字不是二进制类型时要求重新输入。
这都不是关键,关键是用递归做……算法知道,边界清楚,调用自身我也OK,难点在返回值的部分如何写。
———–懵与懂的分界线———–
首先感谢李涛同学的代码提示: