我一直在调试这个函数,但我不知道为什么当我向函数发送4时它会抛出99。 这是一个从十进制转换为二进制的函数。 实际上,我试图在每个步骤中cout exp,res和其他变量,然后将它们相乘,但我不知道。这没有意义。
int DecToBinary(long num) {
if(num == 0) {
return 0;
}
else if(num == 1) {
return 1;
}
int exp = 0;
int res = 0;
for (; num != 0; exp++){
res = res+num%2*pow(10,exp);
num = num/2;
}
return res;
}
谢谢你们。
答案 0 :(得分:0)
if(num == 0) {
return 0;
}
else if(num == 0) {
return 1;
}
你知道第二个分支永远不会被执行,对吗?
此外:
pow(10,exp);
这会产生一个浮点数。 为舍入错误做好准备。更好:不要使用pow()
(你不需要使用浮点数来处理整数)。只需逐步进行除法,将结果累加到变量中。
int dec2bin(int n)
{
int r = 0, tp = 1;
while (n) {
r += (n % 2) * tp;
n >>= 1;
tp *= 10;
}
return r;
}