include <stdio.h>
int main(void)
{
int result = 0,num = 12;
for(i = 0; num != 0; i++)
{
result += ((num % 2) * pow(10,i));
num /= 2;
}
printf("%d",result);
return 0;
}
//结果按十进制显示二进制,比如12应该显示1100,但是这串代码运行运行出来是1099,不知道为啥,求指教。
include <stdio.h>
int main(void)
{
int result = 0,num = 12;
for(i = 0; num != 0; i++)
{
result += ((num % 2) * pow(10,i));
num /= 2;
}
printf("%d",result);
return 0;
}
//结果按十进制显示二进制,比如12应该显示1100,但是这串代码运行运行出来是1099,不知道为啥,求指教。
你的计算想法是正确的,但是在c语言中pow函数默认参数和返回值是double类型,而你程序中都为int类型,造成精度损失。
double pow(double x,double y);
#include <stdio.h>
#include <math.h>
int main() {
int x = 10, y = 2; //为变量赋初值
int result = pow(x, y); //求a的b次方
printf("%d\n", result);
return 0;
}
以上代码计算10的平方,答案是99。