码迷,mamicode.com
首页 > 其他好文 > 详细

分数化小数

时间:2017-11-18 21:54:59      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:一个   解决   观察   测试   ++   判断   include   分数   col   

输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。其中a,b ≤ 106, c≤100。输入包含多组数据,结束标记为a=b=c=0。

测试数据:

样例输入:
1 6 4
0 0 0

样例输出:
Case 1: 0.1667

手动模拟除法的运算,用小时候的学的不停“乘10取余”法即可解决。先输出小数点前的数字,由于测试样例中最后一位需要四舍五入,因此先输出前c-1位,最后第c位根据c+1位判断是否舍入。

#include <stdio.h>int main()
{
    int a,b,c,kase = 0;
    while (~scanf("%d%d%d", &a, &b, &c))
    {
        if (!a && !b && !c) break;//如果a,b,c中有一个为0则跳出
        kase++;
        //先输出小数点前的数字
        printf("Case: %d: %d.", kase, a/b);
        a %= b;
        //输出小数点后的c-1位
        for (int i = 0; i < c-1; ++i) 
        {
            a *= 10;
            printf("%d", a/b);
            a %= b; //跳出时a为c-1位运算后的余数
        }
        //考虑最后一位四舍五入
        int more = ((a*10)%b * 10) / b; //观察第c位的后一位
        if (more >= 5)
            printf("%d\n", (a*10)/b + 1);
        else printf("%d\n", (a*10)/b);
    }
    return 0;
}

 

分数化小数

标签:一个   解决   观察   测试   ++   判断   include   分数   col   

原文地址:http://www.cnblogs.com/2228212230qq/p/7857936.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!