2.一个球从100m高度自由落下,每次落地后反跳回原高度的,在落下在反弹,当球的高度小于5m时则不再弹起,问球弹几次后落下,最后一次
# include <stdio.h>
int main (void)
{
double sn= 100,hn= sn/2; //sn为第一次落地时走过的路程,hn为第一次弹回的高度
int n; //n为弹回的次数,用于循环中
for(n=2;n<=10;n++)
{
sn=sn+2*hn; //第二次落地时走过的路程 等于 第一次落地时走过的路程 + 第一次弹回的过程*2(弹回一次,落地一次所以一乘2)
hn=hn/2; //第三次弹回的路程是上一次的一半,所以除以2
}
printf("第十次落地时总共经过了%f米\n",sn);
printf("第十次反弹%f米\n",hn);
return 0;
}
#include <stdio.h>
int main()
{
double sn=100,hn=sn/2;
int n;
for(n=2;n<=10;n++)
{
sn=sn+2*hn; /*第n次落地时共经过的米数*/
hn=hn/2; /*第n次反跳高度*/
}
printf("第10次落地时共经过%f米\n",sn);
printf("第10次反弹%f米\n",hn);
return 0;
}
#include <stdio.h>
int main()
{
int i, n = 10;
float sum = 0.0, num = 100.0;
for (i = 0; i < 10; i++)
{
sum = sum + num + num / 2.0; //下降高度+弹起的高度
num = num / 2;
}
printf("第10次落地时共经过%f米\n", sum - num); //多了一次弹起的高度
printf("第10次反弹%f米\n", num);
return 0;
}