题目描述
输入非负整数a,c, 正整数b , 输出a/b的小数形式,精确到小数点后的c位,a,b<=10ˆ6,c<=100,输入包含多个数据,当数据a=b=c=0时结束。
输入
a,c,b
输出
样例输入
15 96 77
样例输出
0.15625000000000000000000000000000000000000000000000000000000000000000000000000
题目解析:整数部分就是a整除b得到的结果,而小数部分不能用浮点数或者double类型直接相除得到,得不到那样的精度。所以,得采取如下措施,一位一位地去算小数的值,如样例中的数据:
15%96=15 | 15*10=150 | 150/96=1 |
150%96=54 | 54*10=540 | 540/96=5 |
540%96=60 | 60*10=600 | 600/96=6 |
…… | …… | …… |
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char h[200];
int a,b,c,m,n,p,q;
while(scanf("%d%d%d",&a,&b,&c)==3)
{
if(a==0&&b==0&&c==0) break;
memset(h,'\0',sizeof(h));
q=a;
for(int i=0;i<c;i++)
{
m=a%b;
n=m*10;
p=n/b;
h[i]=p+'0';
a=n;
}
if(c>0) printf("%d.%s\n",q/b,h);
else printf("%d\n",a/b);
}
return 0;
}