藍橋杯-猴子吃包子-輸出小數的位數
阿新 • • 發佈:2020-08-13
猴子吃包子
問題描述 從前,有一隻吃包子很厲害的猴子,它可以吃無數個包子,但是,它吃不同的包子速度也不同;肉包每秒鐘吃x個;韭菜包每秒鐘吃y個;沒有餡的包子每秒鐘吃z個;現在有x1個肉包,y1個韭菜包,z1個沒有餡的包子;問:猴子吃完這些包子要多久?結果保留p位小數。 輸入格式 輸入1行,包含7個整數,分別表示吃不同包子的速度和不同包子的個數和保留的位數。 輸出格式 輸出一行,包含1個實數,表示吃完所有包子的時間。 樣例輸入 4 3 2 20 30 15 2 樣例輸出 22.50 注意 用“ * ”控制輸出小數的位數 程式碼如下: 1 #include<iostream>
2 #include<stdio.h>
3 using namespace std;
4 int main()
5 {
6 double a[3],b[3];
7 int n;
8 for(int i=0;i<3;i++)
9 {
10 scanf("%lf",&a[i]);
11 }
12 for(int i=0;i<3;i++)
13 {
14 scanf("%lf",&b[i]);
15 }
16 scanf("%d",&n);
17 double sum=0;
18 for(int i=0;i<3;i++)
19 {
20 sum=sum+b[i]/a[i];
21 }
22 printf("%.*lf",n,sum);
23 return 0;
24 }
float與double的區別:
float為單精度,記憶體中佔4個位元組,有效數位是7位(因為有正負,所以不是8位),double為雙精度,佔8個位元組,有效數位是16位。
有個例子:在C和C++中,如下賦值語句
float a=0.1;
編譯器會報錯
原因:
在C/C++中,上述語句等號右邊0.1,我們以為它是個float,但是編譯器卻把它認為是個double(因為小數預設是double),所以要報這個warning,一般改成0.1f就沒事了。