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语言案例.好了,我们在下一个章节再见,加油!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

公子绝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值