将小数八进制转化为十进制
题目如题!题目要求输入
0.75
0.0001
0.01234567
输出
0.75 [8] = 0.953125 [10]
0.0001 [8] = 0.000244140625 [10]
0.01234567 [8] = 0.020408093929290771484375 [10]
以下是本人编的:
#include<stdio.h>
int main()
{
int i,k=0,j,z,c;
float a[3],s[3]={0},q[3],n;
for(i=0;i<3;i++)
scanf("%f",&a[i]);
for(i=0;i<3;i++)
{
k=0;
q[i]=a[i];
for(c=0;a[i]!=0;)
{
k=int(a[i]*10); //这是将小数转为整数,就是将小数点的下一位转为整数
c++; //c记录要除以8的多少次方
a[i]=a[i]*10-k; // 将整数部分减掉
for(z=1,j=0;j<c;j++) //这就是算要除以多少的了
{
z*=8;
}
n=k/z;
s[i]+=n; //把那些数加起来
}
}
for(i=0;i<3;i++)
printf("%f[8]=%f[10]\n",q[i],s[i]);
return 0;
}
结果不知道出什么问题了~求解
[ 本帖最后由 z8869113 于 2011-3-26 20:03 编辑 ]