一个编程的问题 :一球从100m高度*下降,每次落地后反跳回原来高度的一半,在落下.

问题描述:

一个编程的问题 :一球从100m高度*下降,每次落地后反跳回原来高度的一半,在落下.
求它在第10落地时,共经过多少m?第10次反弹多高 .
我的这个程序 为什么求出来是0
# include
void main ()
{
int i=0,a=100;
for (i=0;i

首先a声明成整数,因此a/2将进行整除,最后将出现1/2=0(整除的结果),这是你程序实现中出现的第一个问题,第二个问题是你没有求算共经过多少米,我的代码如下:
#include
int main(int argc, constchar * argv[])
{
// insert code here...
int i = 0;
double initHeight = 100.00, totalDistance = 0.0;

// 第一次落地的高度为初始高度
totalDistance = 100.0;
for (i = 1 ; i // 反弹的高度为前一次高度的1/2,但是由于反弹后会落下,因此第i+1次落地过程经过的高度为前一次高度,此处为第i+1次落地后经过距离的加算
totalDistance += initHeight;
initHeight = initHeight / 2;
}
// 第10次落地后反弹的高度
initHeight = initHeight / 2;
printf("total distance:%f\n", totalDistance);
printf("Height after 10 times:%f\n", initHeight);
return0;
}