标签:10 20 落地 -- float 高度 C语言 等比数列 100
问题描述:
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
方法一:
程序实现:
#include<stdio.h>
int main()
{
float h,s;
h=s=100;
h=h/2; //第一次反弹高度
for(int i=2;i<=10;i++)
{
s=s+2*h;
h=h/2;
}
printf("第10次落地时,共经过%f米,第10次反弹高%f米\n",s,h);
return 0;
}
方法二:是一个纯数学的算法,从第二次开始每次都是一上一下,高度只是前一次的一半,说白了就是等比数列的求和以及求第十项的大小。
等比数列的通项公式是:
等比求和:① 当q≠1时 或 ② 当q=1时
# include <stdio.h>
# include <math.h>
int main(void)
{
float a = 100;//等比数列首项;
float q = 0.5;//公比
float s,h;//定义等比数列的和s,第十项h;
h = a*pow(q,10);//第十次弹起的高度,注意第十次落地的高度需要h*2
s = 2*(50-h*q*2)/(1-q)+100;
printf("第十次的高度为%f;总路程为%f",h,s);
return 0;
}
结果:
第10次落地时,共经过299.609375米,第10次反弹高0.097656米
标签:10,20,落地,--,float,高度,C语言,等比数列,100 来源: https://blog.csdn.net/qq_45822555/article/details/122652369
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。