zoukankan      html  css  js  c++  java
  • 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,输出即可。

     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 const int N = 10010;
     5 char d[N] ;
     6 int ans[N] ;
     7 int main(){
     8     while(cin>>d){
     9         memset(ans,0,sizeof(ans));  //每组数据都必须先初始化ans[] 
    10         int d2;
    11         int len = strlen(d);       //记录小数的位数 
    12         int t = 0 ;
    13         for(int i = len - 1 ; i > 1 ; i--){
    14             d2 = d[i] - '0' ;     //d2来接收小数的每一位的数 
    15             int k = 0 , j = 0 ;
    16             while(j<t || d2){    //此循环内语句为数组模拟除法计算 
    17                 d2 = d2*10 + ans[j++]; 
    18                 ans[k++] = d2/8 ;
    19                 d2 %= 8 ;
    20             }
    21             t = k;     //记录最后的得到的位数 
    22         }
    23         cout<<d<<" [8] = 0." ;
    24         for(int i = 0 ; i < t ; i++)
    25             cout<<ans[i];
    26         cout<<" [10]"<<endl;
    27     }
    28     return 0;
    29 }
    View Code

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

  • 相关阅读:
    shell test条件判断
    shell 变量
    shell 流程结构
    shell 正则表达式
    shell脚本常用参数
    snmp 简单的网络管理协议
    linux
    nmap
    git 基础操作
    linux 下 svn 更新代码
  • 原文地址:https://www.cnblogs.com/My-Sunshine/p/4853359.html
Copyright © 2011-2022 走看看