小数除法

题目描述
TWQ同学做了很多题,感觉自己已经很厉害了,可是今天突然有一道题难住了他,题意很简单就是给你两个数,计算这两个数相除后的结果,但要求是保留到小数点后c位,TWQ有些困惑不知道如何去解决这个问题,因为以前他所做的题都是给定的保留小数点后几位,但这这题却没有给出确切的值,还请聪明的你帮助TWQ解决这个问题。

输入
正整数a,b,c(a,b<=100000,c<=1000),输入有多组测试用例结束的标志为a=b=c=0。

输出
a/b的小数形式,精确到小数点后c位。

样例输入
5 9 3
0 0 0

样例输出
0.556

#include<stdio.h>
int main()
{
    
    
    int d[1000];
    int a, b, c, i, x;
    while(scanf("%d%d%d",&a,&b,&c),a!=0&&b!=0&&c!=0)
    {
    
    
        x=a%b;  
        d[0]=a/b;//计算小数点前面的数
        for(i=1 ;i<=c+1; i++)//计算c+1位小数
        {
    
    
            x=x*10;//余数扩大10倍进行运算
            d[i]=x/b;//商为要求的小数位
            x=x%b;//余数为下一次运算
            if(i==c+1&&d[c+1]>=5)
            {
    
    
                d[c]++;//判断末尾
            }
        }
        for(i=c; i>0; i--)
        {
    
    
            if(d[i]==10)//判断特殊情况,像0.99999这样的就要输出1.00000
            {
    
    
                d[i]=0;
                d[i-1]++;
            }
        }
        for(i=0; i<=c; i++)
        {
    
    
            if(i==0)
            printf("%d.",d[0]);
            else
            printf("%d",d[i]);
        }
        printf("\n");
    }
}

猜你喜欢

转载自blog.csdn.net/m0_46381590/article/details/111640371