蓝桥杯-猴子吃包子-输出小数的位数
猴子吃包子
问题描述
从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同;肉包每秒钟吃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就没事了。