在C中使用递归将十进制数转换为二进制数

在C中使用递归将十进制数转换为二进制数,c,recursion,dynamic-programming,procedural-programming,number-systems,C,Recursion,Dynamic Programming,Procedural Programming,Number Systems,我有这个密码。代码一切正常。唯一的问题是,当函数convert()被递归调用时,我不明白为什么我们在最后第二行乘以10 #include<stdio.h> int convert(int); int main() { int dec,bin; printf("\n Enter the decimal no.:"); scanf("%d",&dec); bin=convert(dec); print

我有这个密码。代码一切正常。唯一的问题是,当函数convert()被递归调用时,我不明白为什么我们在最后第二行乘以10

#include<stdio.h>
int convert(int);
int main()
{
    int dec,bin;
    printf("\n Enter the decimal no.:");
    scanf("%d",&dec);
    bin=convert(dec);
    printf("\n The binary equivalent is %d",bin);
    return 0;
}
int convert(int dec)
{
    if(dec==0)
     return 0;
    else
     return ((dec%2)+10 * convert(dec/2));
}
#包括
int转换(int);
int main()
{
国际12月,bin;
printf(“\n输入小数编号:”);
scanf(“%d”和“&dec”);
bin=转换(dec);
printf(“\n二进制等价物为%d”,bin);
返回0;
}
整数转换(整数-小数)
{
如果(dec==0)
返回0;
其他的
收益率((12月2日)+10*转换(12月2日));
}

有人帮帮我。提前感谢。

您似乎不明白发生了什么:
假设您正在将数字9转换为二进制数字,那么您应该得到“1001”,您就是(使用您的程序)

然而,“1001”(一零零一)显示为1001(一千零一)

哦,也许你不明白,乘以10再加上一些东西是在结尾加上一些东西的方法:如果我让你把数字2加上数字3,你会做以下事情:

3 * 10 + 2 = 32

您在这里也在做同样的事情(但是数字“假装”是二进制数字)。

代码不是很有用,假装十进制数是二进制的。32位
int
不能用这种方式转换,因为10^32超出了32位整数的范围。它只能合理地转换
char
类型。最好转换成字符串。顺便说一句,没有“最后一行乘以10”。是否存在将
+
*
进行排版交换的问题?