輸入正整數a,b,c,輸出a/b的小數形式,精確到小數點後c位。a,b≤10⁶,c≤100。
輸入包含多組資料,結束標記為a=b=c=0。
樣例輸入:
1 6 4
0 0 0
樣例輸出:
case 1: 0.1667
渣渣智本以為這道題很簡單,然而。。。
如果很多很多很多小數點後的位數怎麼辦,也就是c,然後就找了很多大佬寫的,真的不愧是大佬,太強了。
一開始連怎麼輸出多少位都不知道後來發現了一種東西叫「.*」。
#include
intmain
(void
)
這樣就會如上所說16位之後就會輸出0。
因此必須手動模擬除法的運算,不停「乘10取餘」法即可解決。先輸出小數點前的數字,由於測試樣例中最後一位需要四捨五入,因此先輸出前c-1位,最後第c位根據c+1位判斷是否捨入。
然而還會有有許多坑點:
1.正整數a,b,c
2.末位要進製
3.像0.9999保留三位小數這樣
由於進製會影響之前的一連串數字,於是,就將邊迴圈邊輸出的方式替換成用陣列儲存每一位的數字。
最終找到大佬的**,真正的無bug:
來自 capus_burki的 [
#include
#include
intmain()
;//儲存商的陣列
while
(scanf
("%d%d%d"
,&a,
&b,&c)
)else
//不能被整除 }}
else
if(x >4)
x_arr[i]
= temp +1;
else
x_arr[i]
= temp;
}//正常情況
else
x_arr[i]
= x;}}
printf
("%d."
,x_arr[0]
);//先輸出整數部分
for(
int k =
1; k <= c; k++
)printf
("%d"
,x_arr[k]);
//小數部分
printf
("\n");
}return0;
}
習題2 5 分數化小數
演算法競賽入門經典 第2版 第2章 迴圈結構程式設計 本章有兩個難題 習題2 4 子串行之和,習題2 5 分數化小數。習題2 5 分數化小數 訪問量如此之大,證明讀者有需求,並且之前寫的程式有瑕疵,處理不了進製問題,故決定重寫該題 2018 8 9 9 28 以下 為ac 完全符合題意的 可以應對測...
習題 2 5 分數化小數
模擬保留小數字的過程 思路 這道題主要要注意的是小數的位數需要人工輸入,就是模擬保留小數字的過程,具體的思路是先輸出整數字和小數點,小數字則通過上一次除后的所得餘數再除除數依次類推,到最後一位時要根據下一位的數值來判斷是否進製。這裡選擇題目的樣例就是1 6,輸出至小數點後4位數,先求出他們的商,既1...
演算法入門經典習題 2 5 分數化小數
題目 輸入正整數a,b,c,輸出 a b 的小數形式 精確到小數點後 c 位 a,b 10的六次方,c 100.輸入包含多組資料,結束標記為a b c 0 樣例輸入 1 6 4 0 0 0 樣例輸出 case 1 0.1667 理解 一開始就以為會是那樣的就正常想的用double來宣告一下結果,然後...