当前位置:   article > 正文

C++ 球从M米高度自由下落,每次落地后返回原高度的一半,再落下。它在第N次落地时反弹多高?共经过多少米?_一球从m米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第n次落地时反

一球从m米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第n次落地时反

本片博客用于记录此题的思路和解法

解题思路:

1. 使用double定义变量,且都要赋值为起始高度便于计算

2. 对于反弹的高度的计算,使用循环除2即可

3.对于总路程,由于已经将总路程赋值为起始高度,则只需要累加每次反弹的高度乘2(反弹上去与掉下来)

tips:要注意题目问是第N次落地时经过多少米,所以总路程算的是第N次之前的总路程,这里使用if做限定

完整代码:

  1. #include <iomanip>
  2. #include <iostream>
  3. using namespace std;
  4. int main()
  5. {
  6. double M, N;
  7. cin >> M >> N;
  8. double current_height = M;
  9. double total_distance = M;
  10. for (int i = 1; i <= N; i++)
  11. {
  12. current_height /= 2; // 落地一次反弹的高度
  13. if (i != N)
  14. { // 不算第N次落地后的上去和下来
  15. total_distance += current_height * 2; // 落地一次后反弹与落下的路程
  16. }
  17. }
  18. cout << fixed << setprecision(2) << current_height << " " << total_distance << endl;
  19. return 0;
  20. }

记忆:

1.double或float都可以定义浮点数,不过double精度更高

2.输出n位小数语句

 cout << fixed << setprecision(n) << xxx <<endl;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/527932
推荐阅读
相关标签
  

闽ICP备14008679号