写一个二进制和十进制的转换h函数,输入一个二进制数,输出相应的十进制数

#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;
}
代码是这样的,为什么程序在编译时会报错?

img

因为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;
}

如有帮助,希望采纳一下

https://www.zhihu.com/question/487066786/answer/2122769090