输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b《10^6,c《100。输入包含多组数据,结束标记为a=b=c=0
样例输入:
1 6 4
0 0 0
样例输出:
Case 1:0.1667
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
难点,这道题不能用%.cf来使用,只能使用传统的数学方法求余数后乘10再求余数使用C-1次,同时最后用四舍五入判断第C+1位数是否大于5。
#include<stdio.h>
int main(){
int a,b,c,res;
int kase=0,n,i=1,m;
while(scanf("%d%d%d",&a,&b,&c)==3 &&a &&b &&c){
if(a>1000000 && b>100000 && c>100){
break;
}
n = a/b; //a除以b的整数
printf("Case %d: %d.", ++kase, n);
m =a % b; //取a除以b的余数
while(i++<c) { //用余数分别乘10,取出C位数的小数
m *= 10;
printf("%d",m/b);
m %= b; //用乘以10的余数再除以b取余数
}
//将第c+1数乘十变成个位数,判断是否大于5,大于五就进一位
m *=10; //第C位数
printf("%d\n",((m%b)*10/b>5)? (m/b+1):(m/b));
}
return 0;
}