进制转换小数c语言代码,C语言进制转换小数负数皆可 代码求解释

满意答案

#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分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值