好好想也没多少难度,用堆栈就能完成,下面是我写的代码,大家共同参考了。
#include <stdio.h>
void former(int a);
/*转换整数部分二进制*/
void later(float b);
/*转换小数部分二进制*/
void main()
{
float b, n;
int a;
printf("Input the number:");
scanf("%f",&n);//输入需要转换的十进制数
printf("二进制数为:");
a = (int)n;
//取整数部分
b = n - a;
//取小数部分
if (a == 0)
{
printf("0.");
later(b);
}
else
{
former(a);
printf(".");
later(b);
}
printf("\n");
}
/*转换整数部分二进制*/
void former(int n)
{
if ( n!= 0)
{
former(n / 2);
printf("%d",n % 2);
}
}
/*转换小数部分二进制*/
void later(float p)
{
int q,i;
for (i = 0; i < 10; i++)
{
q = int(p * 2);
p = p * 2 - q;
printf("%d",q);
if (p == 0)
{
break;
}
}
}