1. 程式人生 > >C語言 分數化小數

C語言 分數化小數

輸入正整數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

這道題靠計算機本身來做除法是會出現精度問題的,所以要模擬數學上的除法:

#include <stdio.h>

int main()
{
    int a, b, c, ct = 1;
    while(3 == scanf("%d%d%d", &a, &b, &c))
    {
        if(0 == a && 0
== b && 0 == c) break; int integer = a / b; // 獲得整數部分 printf("Case %d: %d.", ct++, integer); a %= b; // 獲得餘數 int i = 1; // 進行c-1次模數學擬除法求出小數點後c-1位,因為要四捨五入,所以最後一位單獨處理 while(i++ < c) { a *= 10; printf
("%d", a / b); a %= b; } a *= 10; // 判斷最後一位的下一位是否大於5,進行四捨五入 printf("%d\n", ((a % b) * 10 / b > 5) ? (a / b + 1) : (a / b)); } return 0; }