C语言已知一球从高空落下时,每次落地后反弹至原高度的四分之一再落下。编写一程序,从键盘输入整数n和m,求该球从n米的高空落下后,第m次落地时共经过的路程以及第m次落地后反弹的高度,并输出结果。
时间: 2024-02-21 16:56:38 浏览: 55
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
好的,我来为您编写这个程序。
程序如下:
```c
#include <stdio.h>
#include <math.h>
int main()
{
int n, m;
float s, h;
printf("请输入球的初始高度n和落地次数m:\n");
scanf("%d%d", &n, &m);
s = n; // 第一次落地时经过的路程就是n
h = n / pow(2, m); // 第m次落地后反弹的高度
for (int i = 2; i <= m; i++)
{
s += 2 * n / pow(2, i - 1); // 第i次落地时经过的路程
}
printf("第%d次落地时共经过的路程为%.2f米\n", m, s);
printf("第%d次落地后反弹的高度为%.2f米\n", m, h);
return 0;
}
```
程序思路:
1. 从键盘输入球的初始高度n和落地次数m。
2. 第一次落地时经过的路程就是n,第m次落地后反弹的高度为n/2^m。
3. 通过循环计算出第2到第m次落地时经过的路程,累加到s中。
4. 输出第m次落地时共经过的路程和第m次落地后反弹的高度。
注意:程序中用到了pow函数来求2的m次方,需要在开头添加math.h头文件。
希望能够帮到您!
阅读全文