满意答案
#include
void fun1(long a)//输出二进制数
{
long p;
if(a>0)
{
p=a%2;//取余
fun1(a/2);//递归取余
printf("%d",p);//一个一个地输出余数
}
}
void DEC1(double b)
{
if(b>0)
{
b=b*2;//右移一位
printf("%d",(long)b);//输出这位小数
DEC1(b-(long)b);
}
}
void fun2(long a)//转换为8进制
{
long p;
if(a>0)
{
p=a%8;
fun2(a/8);
printf("%d",p);
}
}
void DEC2(double b)
{
if(b>0)
{
b=b*8;//右移三位
printf("%d",(long)b);
DEC2(b-(long)b);
}
}
void fun3(long a)//16进制输出
{
long p;
if(a>0)
{
p=a%16;
fun3(a/16);
if(p>9)
printf("%c",p+'A'-10);
else
printf("%d",p);
}
}
void DEC3(double b)
{
if(b>0)
{
b=b*16;//右移4位
if((long)b>9)
printf("%c",(long)b+'A'-10);
else
printf("%d",(long)b);
DEC3(b-(long)b);
}
}
long main()
{
double m,l;
long n;
printf("输入一个十进制数:");
scanf("%lf",&l);
printf("\n其对应的二进制数为:");
if(l<0)
{
printf("-");
m=-l;
}
else
m=l;
n=(long)m;
fun1(n);
if(m-n>0)
printf(".");
DEC1(m-n);
printf("\n其对应的八进制数为:");
if(l<0)
{
printf("-");
}
n=(long)m;
fun2(n);
if(m-n>0)
printf(".");
DEC2(m-n);
printf("\n其对应的十六进制数为:");
if(l<0)
{
printf("-");
}
n=(long)m;
fun3(n);
if(m-n>0)
printf(".");
DEC3(m-n);
printf("\n");
system("pause");//程序停止
}
00分享举报