分数化小数

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

样例输入

1   6   4

0   0   0

样例输出

0.1667

使用转换说明符 *
我们都知道可以通过%m.n来控制数据的输出范围,这里要求m和n都是字面量

类似地,标准库也提供了通过变量来控制宽度的方法,这时我们就要使用%*.*。当使用*的时候要求通过一个int类型的参数来指定宽度,如果参数是正数则输出右对齐,如果参数是负数则输出内容左对齐,相当于添加了一个-标签。例子如下:

int w1, w2;
float a, b;
scanf("%f%f", &a, &b);
scanf("%d%d", &w1, &w2);
printf("%*.*f", w1, w2, a / b);//此时a/b的显示宽度由w1和w2来控制

代码如下

#include<iostream>
using namespace std;

int main()
{
    int a;            //被除数 a
    int b;            //  除数 b
    int c;            //  精度 c
    double num = 0;        //结果    
    
    while (cin>>a>>b>>c)
    {
        if (a == 0 && b == 0 && c == 0)
            break;

        num    = (double) a / b ;   //  存放
        printf("%lf ",num);        //检验
        printf("%.*lf ",c,num);    //输出  , 注意用 *  
    }
    return 0;
}

原文地址:https://www.cnblogs.com/go-alltheway/p/13339105.html