使用C语言,一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时共经过多少米?反弹多高?结果保留两位小数,写出代码
时间: 2023-06-11 22:05:44 浏览: 131
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
好的,我知道了。下面是关于问题的回答和代码:
题目描述:
一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。它在第N次落地时共经过多少米?反弹多高?
算法思路:
1. 立足于每一次下落。
2. 分别计算N次自由下落和N-1次上升时的路程。
3. 合并起来,返回结果。
C语言代码实现:
#include<stdio.h>
#include<math.h>
int main()
{
float M; // M米高度
int N; // 第N次落地
scanf("%f %d",&M,&N); // 输入初始高度和落地次数
float sum=0,h=M; // sum初始化为0,当前高度初始化为M
for(int i=1; i<=N; i++) // N次落地
{
if(i==1)
sum+=h; // 第一次落地
else{
sum+=2*h; // 第i次落地,路程 = 前一次落地路程+上一次反弹路程
}
h=h/2; // 反弹高度
}
printf("%.2f %.2f",sum,h); // 输出结果
return 0;
}
最终结果:
样例输入:
100.00 3
样例输出:
300.00 25.00
我希望我的回答对你有所帮助。
阅读全文