2 5 分數化小數

2021-09-26 09:08:44 字數 1235 閱讀 6461

輸入正整數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來宣告一下結果,然後...