```cpp #include <iostream> int main() { double height, total_distance = 0.0; std::cout << "请输入初始高度 h (米): "; std::cin >> height; // 第一次落地时,总距离就是初始高度 total_distance += height; for (int i = 1; i <= 9; ++i) { height /= 2.0; // 每次反弹高度减半 total_distance += height * 2; // 上升和下降的距离 } // 第 10 次落地后,不再上升 height /= 2.0; total_distance += height; std::cout << "第 10 次落地时,共经过 " << total_distance << " 米。\n"; std::cout << "第 10 次反弹高度为 " << height << " 米。\n"; return 0; } ``` 需要注意的逻辑点: 1. 初始高度 `height` 在第一次落地时直接加到 `total_distance` 中,因为这是唯一一次没有反弹的情况。 2. 从第二次落地开始,每次反弹的高度都是前一次的一半,因此需要在循环中不断更新 `height`。 3. 第 10 次落地后,气球不再反弹,所以最后一次落地的距离只加一次。 [2024-12-07 20:05:36 | AI写代码神器 | 302点数解答]