C语言案例 球落地反弹-10

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米第10次反弹多高?

程序分析

球在落地后会反弹为原高度的一半,若设高度为h,那么每次落地的距离为:
第一次:h1=1/2h
第二次:h2=1/4h
第三次:h3=1/8h

第n次:hn=1/2^n * h
第n次落地的总距离s使用for循环来进行累加每次的结果即可:s=s+2*h

步骤一:定义程序目标

编写一个C程序,球体从100米处自由落下,每次落地会反弹回原高度的一半,然后再落下,打印出它在第10次落地时,共经过多少米?第十次反弹的高度是多少?

步骤二:程序设计

整个程序由两大关键部分,一个为每次反弹的高度,这个进行程序分析,可以得出hn=1/2n x 100的规律进行求解,另一个是经过的总距离,这个是使用累加每次的反弹的高度即可解决,公式为:s=s+2h

代码编写

#include<stdio.h>
#include<math.h>
int main(){
    float s=100,h=100;
    h=h/2;  //第一次反弹的高度
    for(int i=2;i<=10;i++){
        s=s+2*h;
        h/=2;
    }
    printf("第10次落地的距离为:%.3f\n",s);
    printf("第10次反弹的高度为%.3f\n",h);
    return 0;
}

效果:
在这里插入图片描述

总结

本案例需要理清两个逻辑,每次反弹的高度与球体每次落地所经过的距离,反弹的高度比较好理解,每次都为上一次的1/2高度,至于累加距离是向量性,不是矢量性。有的朋友可能会理解为第一次落地的距离是50,反弹的高度是50,因为把反弹的高度考虑到落地的距离中去了从而导致方向偏了。第二次的距离是第一次的距离,加上第一次的两次反弹高度,只是理解这个逻辑,整个程序就理清了。关于更多程序案例项目,请点击链接进行查看佐德将军C语言案例.好了,我们在下一个章节再见,加油!

你可能感兴趣的:(C语言,c语言,开发语言,球体反弹)