原题链接:[编程入门]自由下落的距离计算
解题思路:
建立数学模型。分析下落的过程,把初始的高度看作起点,反弹的高度看作终点,反弹高度是原高度的1/2。
那么把初始高度落下,到反弹结束看作一次完整的过程。经历的米数是原初始高度的1.5倍。
将一次完整的过程进行拆分
1.一次完整的初始高度(下落至地面!!!)
2.反弹0.5倍的初始高度。
模型建立完毕,以这个为思想,审题,第n次落地时,经历的米数应该是完整的n次下落过程,减去最后反弹的高度。
注意事项:
申请题意,是第n次落地时,落地时,落地时(重要事情说三遍)经历过的米数。
容易忽略经历的米数包括反弹的米数。
参考代码:
#include<stdio.h> void main() { int n,i; //n是次数 float m,sum=0.0; //m是初始高度,sum是经历米数(这里一定要初始化经历米数,不然会报错) scanf("%f%d",&m,&n); for(i=1;i<=n;i++){ sum=sum+m; //拆分完整过程中的第一步,下落至地面 m=m/2; //计算反弹的高度,同时覆盖为下一次完整过程的初始高度 sum=sum+m; //拆分完整过程中的第二步,下落至地面 } printf("%0.2lf %0.2lf\n",m,sum-m); //题目说落地时的米数,所以减去最后的反弹高度 }
该过程注重建模思想,代码仅供参考。
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复