题目描述
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");
}
}