满意答案
//十进制转化成N进制的算法是
//整数部分为除N取余法,小数部分为乘N取整法
#include
#include
#include
double EPS=1.0e-8;
int dblcmp(double x)
{
if(fabs(x)
return x<0?-1:1;
}
void printfFloat(double x,int base)
{
if(dblcmp(x==0))return ;
printf(".");
int tmp;
while(dblcmp(x))
{
x*=base;
tmp=x;
x-=tmp;
printf("%d",tmp);
}
}
void printfInt(int n,int base)
{
if(n==0)return ;
printfInt(n/base,base);
printf("%d",n%base);
}
void change(double x,int base)
{
int tmp=x;
if(tmp==0)
{
printf("0");
}
else
{
printfInt(tmp,base);
}
printfFloat(x-tmp,base);
puts("");
}
int main()
{
double x;
while(scanf("%lf",&x)!=EOF)
{
printf("输出二进制:");
change(x,2);
printf("输出八进制:");
change(x,8);
printf("输出十六进制:");
change(x,16);
}
return 0;
}
00分享举报