关于8进制小数转化为10进制

来源:互联网 发布:linux打开隐藏文件 编辑:程序博客网 时间:2024/05/16 08:09

我们的思路大概是这样

如果输入数据是0.d1d2d3d4

那么计算的方法就是((((d4/8)+d3)/8+d2)/8+d1)/8 从最高位往最低位一位一位计算

王拓发给大家的福利[2元]

Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 14 Accepted Submission(s) : 6

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

王拓喜欢八进制,完成此题的同学,王拓将发2元的红包福利。问题是:
王拓给出一个八进制的小数,你将它转换为 10 进制小数。

Input

每行一个八进制的小数

Output

每行输出一个对应的十进制的小数

Sample Input

0.750.00010.01234567

Sample Output

0.9531250.0002441406250.020408093929290771484375

Author

tianzuwei 
#include <iostream>#include <string.h>#include <stdio.h>using namespace std;char str1[1010], temp[1010];int main(){    while(cin>>str1)    {        memset(temp,0,sizeof(temp));        int num,tmp,k=0,length = strlen(str1);        int j;        for(int i = length - 1; i > 1 ; i--)        {            num = str1[i]-'0';            for( j = 0;j<k||num!=0;j++ )            {                int z ;                if(j<k)                    z = temp[j]-'0';                else                    z = 0;                tmp = num*10+z;                temp[j] = tmp/8 +'0';                num = tmp%8;            }            k = j;        }        printf("0.%s\n",temp);    }    return 0;    }