poj1131-Octal Fractions(进制转换)

一,题意:
  求一个八进制小数的十进制。
二,思路:
  暴力数组模拟计算,注意千万不带小数做除法运算
  1,对于八进制小数,转换成十进制,书写形式分析:
  2,对其除法过程进行模拟:
  3,输出。
三,步骤:
  1,0.756[8] -> ( (6/8 + 5)/8 + 7)/8 [10]
  2, 除法过程:如 0.75
    i,5/8的结果要是整数,那么就5000/8=625 (5加几个0能被8整除就加几个0)
    ii,625不能直接加上7,应该加上7000,得到7625;
    iii,7625不能被8整除,那么就7625000/8;
  3,输出即可。

 #include<iostream>
#include<cstring>
using namespace std;
const int N = ;
char d[N] ;
int ans[N] ;
int main(){
while(cin>>d){
memset(ans,,sizeof(ans)); //每组数据都必须先初始化ans[]
int d2;
int len = strlen(d); //记录小数的位数
int t = ;
for(int i = len - ; i > ; i--){
d2 = d[i] - '' ; //d2来接收小数的每一位的数
int k = , j = ;
while(j<t || d2){ //此循环内语句为数组模拟除法计算
d2 = d2* + ans[j++];
ans[k++] = d2/ ;
d2 %= ;
}
t = k; //记录最后的得到的位数
}
cout<<d<<" [8] = 0." ;
for(int i = ; i < t ; i++)
cout<<ans[i];
cout<<" [10]"<<endl;
}
return ;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

上一篇:VS工具如何新建筛选器


下一篇:[ShortCut] IE10快捷键