描述
输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位(注意最后一位的四舍五入问题)。2 <= a,b,c <= 1000。(注意本题小数保留范围)。
输入
第1行是一个整数n,表示随后有n组数据。每组数据占一行,输入正整数a,b,c (2<=a,b,c<=1000),用空格隔开。
输出
对每组数据,计算并输出a/b的小数形式,保留小数点后c位,并换行,
样例
输入 | 输出 |
---|---|
3 | |
2 3 20 | 0.66666666666666666667 |
2 6 10 | 0.3333333333 |
6 7 3 | 0.857 |
#include<stdio.h>
int main()
{
int n,i,a,b,c;
int d,j,k;
int out[1001];
int flag=1;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d%d",&a,&b,&c);
d=a/b;
a=a%b;
for(j=1;j<=c;j++)
{
a=a*10;
out[j]=a/b;
a=a%b;
if(j==c)
{
a=a*10;
out[j+1]=a/b;
if(out[j+1]>=5)
{
out[j]=out[j]+1;
if(out[j]==10)
{
out[j]=0;
k=j-1;
if(k==0)
{
d=d+1;
}
while(k>0)
{
if(out[k]==9)
{
out[k]=0;
if(k==1)
{
d=d+1;
}
k--;
}
else
{
out[k]=out[k]+1;
break;
}
}
}
}
}
}
printf("%d",d);
printf("%c",'.');
for(j=1;j<=c;j++)
{
printf("%d",out[j]);
}
printf("\n");
}
return 0;
}
易忽视的点:小数部分四舍五入时产生连续进位(数字9)