一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。输入 MN 的值.输出 它在第N次落地时反弹多高?共经过多少米? 保留两位小数 C++
时间: 2024-05-16 08:14:08 浏览: 102
以下是 C++ 代码:
```
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main(){
double m, n;
cin >> m >> n;
double height = m, distance = 0;
for(int i = 1; i <= n; i++){
distance += height;
height /= 2;
if(i == n) distance += height;
}
printf("%.2f %.2f", height, distance);
return 0;
}
```
代码思路如下:
首先从输入中读入球的初始高度 m 和落地次数 n。
然后定义变量 height 表示球的高度,初始值为 m。变量 distance 表示球的总路程,初始值为 0。
接下来使用 for 循环模拟球的落地过程,每次落地后高度变为原高度的一半,球经过的路程加上当前高度。当 i 等于 n 时,记录下球反弹的高度。
最后输出球在第 n 次落地时反弹的高度和球的总路程,保留两位小数。
注意:要使用 double 类型进行计算,否则可能会出现精度错误。
阅读全文