輸入正整數a,b,c,輸出a/b的小數形式,精確到小數點後c位. a, b <=10^6, c <= 100.輸入包含多組數據,結束標記爲a=b=c=0.spa
樣例輸入:code
1 6 4blog
0 0 0it
樣例輸出:io
Case 1: 0.1667class
分析: c 若是較大,就會超過double型的精度,不能簡單地printf("%lf"). 須要本身來計算小數位的數字. 這樣就應該用模擬豎式除法來計算了.數據
#include <stdio.h> int main(void){ int a, b,c; int result[101]; while(scanf("%d%d%d",&a,&b,&c)!=EOF){ if(a == b && b== c && c == 0){ break; } int positive = a/b; while(a/b != 0){ a = a%b; } for(int i=0; i <=c; i++){ a = a * 10; result[i] = a/b; a = a%b; } if(result[c]>5){ result[c-1]++; } for(int i = c-1; i >0; i--){ if(result[i] >=9){ result[i]=result[i]%10; result[i-1] +=(result[i]/10); } } if(result[0]>9){ result[0] = result[0]%10; positive++; } printf("%d.",positive); for(int i=0; i<c;i++){ printf("%d",result[i]); } printf("\n"); } return 0; }
注意進位處理,以及四捨五入.di