0

我有这个代码。代码一切正常。唯一的事情是,当函数 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));
}

谁来帮帮我。提前致谢。

4

1 回答 1

0

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

但是,“1001”(一零零一)显示为 1001(一千零一)。

哦,也许你不明白乘以十并添加一些东西是在最后附加一些东西的方法:如果我要求你将数字 2 附加到数字 3,你将执行以下操作:

3 * 10 + 2 = 32

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

于 2020-09-05T18:46:58.960 回答