• 有限小数化为最简分数


    /*

    请将有限小数化为最简分数。

    Input

    一个整数n 表示需要转化的小数个数; 接下来n行,每行有一个有限小数。(保证小数位数不超过9位)

    Output

    输出有n行,每行为小数对应的最简分数

    Sample Input

    2
    0.5
    0.4
    

    Sample Output

    1/2 2/5

    注意精度问题,数据保证不会有类似1.0的小数。

    */

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    int Gcd(int a,int b){
        if(a<b){
            int t;
            t = a;
            a = b;
            b = t;
        }
        return b!=0?Gcd(b,a%b):a;
    }
    char str[50],str2[50];
    int main() {
        int t,i,k,count,big,small,mul1,mul2,gcd,sum;
        cin>>t;
        while(t--)
            {
            cin>>str;
            count = 0;
            int len = strlen (str);
            for(i=0; i< len;i++){
                if(str[i]!='.'){
                    count++;

                }
                else{
                    break;
                }
            }

            mul1 = mul2 = 1;
            sum = big = small = 0;
            for(i=0; i<count; i++){//整数

                big = str[i]-'0'+ big*10;
                mul1 *= 10;
            }
            for(i=count+1; i<strlen(str); i++){ //小数

                small = str[i]-'0'+ small*10;
                mul2 *= 10;
            }

            big*=mul2;
            sum+=(big + small);
            gcd = Gcd(sum,mul2);
            cout<<sum/gcd<<'/'<<mul2/gcd<<endl;

        }
        return 0;
    }

  • 相关阅读:
    数据类型
    python安装
    计算机基础
    Ajax--1
    ASP.net+MVC--2
    More lumber is required
    History Grading
    strcmp() Anyone?
    How Many Points of Intersection?
    Remember the Word
  • 原文地址:https://www.cnblogs.com/jxust-jiege666/p/6424503.html
Copyright © 2020-2023  润新知