一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
#include
int main()
{
int n;
double h = 100, s = 100;
for(n = 2; n
{
h /= 2;
s += 2 * h;
}
printf("第10次落地时,共经过%.2f米\n", s);
printf("第10次反弹高度为%.2f米\n", h);
return 0;
}
解题思路:
首先分析题目,球从100米高度自由落下,每次落地后反弹回原高度的一半,也就是说第一次反弹高度为50米,第二次反弹高度为25米,以此类推。
我们可以通过循环来计算球在第10次落地时,共经过多少米。具体思路如下:
定义变量h表示球的高度,s表示球经过的总路程,n表示落地次数。
第一次落地时,球经过的路程为h,即s=h。
第二次落地时,球经过的路程为s+h+h/2。
第三次落地时,球经过的路程为s+h+h/2+h/4。
以此类推,第n次落地时,球经过的路程为s+2h。
3.因此,我们可以使用for循环来计算球在第10次落地时,共经过多少米。
领取专属 10元无门槛券
私享最新 技术干货