方法1:
#include<stdio.h>
int DtoB(int a)
{
int i,j=a,m=0;
int s[100];
while(j>=0)
{
i=j%2;
j=j/2
s[m]=i; //将每位二进制值存入数组
m++;
}
while(m--) //倒序输出数组值,即转换后的二进制值
printf("%d",s[m]);
}
int main()
{
int n;
scanf("%d",&n);
DtoB2(n);
printf("\n");
return 0;
}
方法2:
#include<stdio.h>
int DtoB(int a)
{
int i,j;
if(a==0) return (0);
else
{
j=a%2;
i=a/2;
DtoB(i); //嵌套循环
printf("%d",j);
}
}
int main()
{
int n;
scanf("%d",&n);
DtoB(n);
printf("\n");
return 0;
}
当输入为0时,应输出0,然而以上两种方式当输入为0时,却都没有任何输出;随后对主函数进行修改
int main()
{
int n,b;
scanf("%d",&n);
b=DtoB(n);
printf("%d\n");
return 0;
}
即引入常量b,将函数DtoB()的计算结果存入b中,如此输入为0时,输出为0;
但是方法1所得的结果后会多一位“1”,如输入5,应得101,却得1011;
方法2所得的结果后会多一位“0”,如输入5,应得101,却得1010。
目前该问题未找到原因。