蓝桥杯-猴子吃包子-输出小数的位数

猴子吃包子

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

 
原文地址:https://www.cnblogs.com/canneddream/p/13493467.html