#include<stdio.h>
#include<math.h>
int h(double n);
int main()
{
double n;
printf("Please enter a binary number:\n");
scanf("%ld",&n);
printf("%d",h(n));
return 0;
}
int h(double n)
{
int decimalnumber=0,i=0,remainder;
while(n!=0)
{
remainder=n%10;
n=n/10;
decimalnumber+=remainder*pow(2,i);
++i;
}
return decimalnumber;
}
代码是这样的,为什么程序在编译时会报错?

写一个二进制和十进制的转换h函数,输入一个二进制数,输出相应的十进制数
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注
因为
double
类型是双精度,需要将输入数据类型改为int
,如有帮助,希望采纳一下#include<stdio.h> #include<math.h> int h(int n); int main() { int n; printf("Please enter a binary number:\n"); scanf("%d",&n); printf("%d",h(n)); return 0; } int h(int n) { int decimalnumber=0,i=0,remainder; while(n!=0) { remainder=n%10; n=n/10; decimalnumber+=remainder*pow(2,i); ++i; } return decimalnumber; }
如有帮助,希望采纳一下
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报