问题描述
我有这个代码。代码一切正常。唯一的事情是我不明白为什么我们在最后第二行中乘以10 当递归调用函数convert()时。
#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));
}
有人帮助我。预先感谢。
解决方法
您似乎不了解正在发生的事情:
假设您将数字9转换为二进制数字,则应该得到“ 1001”(使用程序)。
但是,“ 1001”(一零零一)显示为1001(一千零一)。
哦,也许您不明白,乘以10并加某物是在末尾附加内容的方法:如果我要求您将数字2附加到数字3,您将执行以下操作:>
3 * 10 + 2 = 32
您在这里做的是相同的事情(但数字“假装”为二进制数字)。