一.题目
习题2-5 分数化小数
输入正整数a,b,c,输入a/b的小数形式,输入包含多组数据,结束标记为a=b=c=0精确到小数点后c位。a,b≤106,c≤100
二.分析
“%.变量f” 是不可能的。因此我们需要一个个位去输出,乘以10再取余10就可以找到位来输出了。最后一步要考虑舍四进五。
三.代码
#include<stdio.h>
int main()
{
int a,b;
int c;
int count=1;
while(scanf("%d%d%d",&a,&b,&c)==3) //每次读取三个数
{
int inter=0; //整数
int smalinter=0; //小数
int i=1;
if(a==0&&b==0&&c==0) return;
inter = a/b;
printf("Case %d : %d.",count,inter);
double temp=(a*1.0/b);
while(i<=c)
{
temp *=10; //每次乘以10
smalinter =(int) temp%10; //强制类型转换 并取余10
if(i!=c)
{
printf("%d",smalinter);
}
else
{
temp*=10;
if((int)temp%10 >5) //考虑舍四进五
printf("%d",smalinter+1);
}
i++;
}
printf("\n");
count++;
}
return 0;
}