C语言编写皮球从h(米)高度自由落下,触底后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?输出保留1位小数。
时间: 2024-05-13 13:14:17 浏览: 130
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
以下是代码实现:
```c
#include <stdio.h>
int main() {
float h;
int n;
printf("请输入初始高度和落地次数:");
scanf("%f%d", &h, &n);
float total_distance = h; // 记录总距离
float height = h; // 记录当前高度
for (int i = 1; i <= n; i++) {
if (i == 1) {
height /= 2; // 第一次反弹高度为初始高度的一半
} else {
height *= 0.5; // 后续反弹高度为前一次落地高度的一半
}
total_distance += height * 2; // 计算总距离
}
printf("第%d次落地时,皮球在空中一共经过%.1f米,第%d次反弹的高度为%.1f米。\n", n, total_distance - h, n, height);
return 0;
}
```
程序运行结果示例:
```
请输入初始高度和落地次数:10 3
第3次落地时,皮球在空中一共经过29.5米,第3次反弹的高度为1.3米。
```
阅读全文