将十进制整数转换成二进制数

问题遇到的现象和发生背景

img

用代码块功能插入代码,请勿粘贴截图

#include
#include
int f(long int x)
{
int b,d,e,r=1;
if(x != 0&&-2^162^16)
{
while(x!=0)
{
d = x%2;
e += d*r;
r *= 10;
x /= 2;
}
return e;
}

}
int main()
{
int a;
long int n;
while(scanf("%ld", &n) != EOF)
{
if(n == 0)
{
printf("0-->0\n");
}
else if(n == 1)
{
printf("1-->1\n");
}
else
{
printf("%ld-->", n);
if(n < 0)
{
printf("-");
n = -n;
a = f(n);
printf("%d\n",a);
}
else
{
a = f(n);
printf("%d\n",a);
}
}
}
return 0;
}

我想要达到的结果

有啥问题吗

2^16,2的16次方要写成pow(2,16)

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^