问:

一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。

求它在第10次落地时共经过多少米,第10次反弹多高。


分析:

这道题的代码实现起来非常简单,我们只需要注意一点——把题目读清楚。

题目中求的是第10次落地时,经过多少m,而不包括第10次回弹的距离。

清楚了这一点后,我们就可以开始用代码实现了:

#include <stdio.h>
//
//球第一次弹跳为100m,然后每次减半
// 求第10次时,球运动了多少m,以及第10次回弹时它可以蹦多高
//
int main()
{
	double distance = 0.0;//总距离
	double ball = 0.0;//球每一次的距离
	int i = 0;
	ball = 100.0;//定义小球第一次下落时的高度

	for (i = 0; i < 10; i++)
	{
		//下落距离
		distance += ball;

		ball /= 2;

		//回弹距离
		distance += ball;
	}
	
	//减去第10次回弹距离
	distance -= ball;

	printf("第10次弹跳时,球的最高处为%lfm,总共运动了%lfm\n", ball, distance);

	return 0;
}