求一个从 100m 下落的球经过的距离和弹高。(谭浩强 C 语言 第三版 129 页第 6.9 题)
一个球从 100m 的高度自由落下,每次落地后跳回原高度的一半,再落下,再反弹。求它在第 10 次落地时,共经过多少米?第 10 次反弹多高。
我们需要注意的是从地面回到上一次落地的一半再到地面,这个过程是两次。每次求出上次高度的一半乘以 2 ,然后加上第一次落地的高度就可以。
#include <stdio.h>
void main()
{
printf("嗨客网(www.haicoder.net)\n\n");
float sn = 100 , hn = sn /2;
int n;
for(n = 2; n<= 10; n++){
sn = sn + 2 * hn;
hn = hn /2;
}
printf("第 10 次落地时共经过 %fm。 \n",sn);
printf("第 10 次反弹 % fm 。 \n",hn);
}
运行后,控制台输出如下:
我们会记录一个 hn 高度的 变量,乘以 2 就是每次从地面到空中再到地面的过程。然后定义了一个 sn 变量,用来加 sn 的和。