• 程序设计入门——C语言 第5周编程练习 1高精度小数(10分)


    1

    高精度小数(10分)

    题目内容:

    由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法。

    (0,1)之间的任何浮点数都可以表达为两个正整数的商,为了表达这样两个数的商,可以将相除的结果以多个整数来表示,每个整数表示结果的一位。即商的第一位用一个整数来表示,第二位用另一个整数来表示,以此类推,就可以输出一个高精度的除法结果了。

    如16/19的结果0.8421052631...就可以依次输出8、4、2、1、0、5、2、6、3、1...。

    而除法的过程,则可以模仿人工列竖式做除法的方式,先将被除数乘以10,得到一位商以后,将余数乘以10作为下一轮计算的被除数:

        160/19->8余8

        80/19->4余4

        ...

    当某次余数为0时,则表明除尽。

    现在,请写一个程序,输入一个分数,计算出它的小数形式。无论是否可以除尽,输出最多小数点后200位。

     

    输入格式:

    形如

        a/b

    的两个数,其中10<=a<b<100。也就是说,这个小数一定是小于1的正数。

     

    提示:输入是带着两个数中间的“/”的,所以scanf应采用“%d/%d”这样的输入格式。

     

    输出格式:

    形如

        0.xxxxxxxxx

    的小数,小数点后最多200位。输出结束的时候要带着回车换行。如果a/b是一个有限不循环小数,则输出完所有的有效位就可以了,不需要再输出后面的0来凑满200位。

     

    输入样例:

    16/19

     

    输出样例:

    0.84210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684

     

    时间限制:500ms内存限制:32000kb

    //
    //  main.c
    //  c yuyan
    //
    //  Created by anzhongyin on 2016/11/29.
    //  Copyright © 2016年 anzhongyin. All rights reserved.
    //
    
    #include <stdio.h>
    #include <math.h>
    
    int main(int argc, const char * argv[]) {
        // insert code here...
        // TODO Auto-generated method stub
        int a,b;
        int quotient=0;
        
        scanf("%d/%d",&a,&b);
        if (a<b&&a>0) {
            printf("0.");
        }
        for (int i=0; i<200; i++) {
            if(a*10>=b)
            {
                quotient=a*10/b;
                a=a*10%b;
                printf("%d",quotient);
            }
            else
            {
                a=a*10;
                printf("0");
            }
            if(a%b==0)
            {
                
                break;
                
            }
        }
        printf("
    ");
    
    }
    

      

  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    每天一点点之 taro 框架开发
    每天一点点之 taro 框架开发
    每天一点点之 taro 框架开发
    WIN10怎么查看端口,并杀死进程
    每天一点点之 taro 框架
    taro编译的时候报 exports.pRimraf = util_1.promisify(rimraf); 错误
    新部署到服务器 报 The requested URL /home/profession was not found on this server. 错误
    ubuntu16.04 重置mysql密码
    SQLSTATE[HY000] [2002] No such file or directory
  • 原文地址:https://www.cnblogs.com/bcd589/p/6126421.html
Copyright © 2020-2023  润新知