请写一个C语言代码计算球下落经过多少米。具体题目如下:一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下并反弹......,求它在第5次和第10次落地时,分别共经过了多少米? 第5次和第10次反弹分别是多高?要求计算结果保留到小数点后3位。用户从键盘输入想要计算的第n次(n<=15)。程序中所有浮点数的数据类型均为float。
时间: 2023-06-08 16:05:05 浏览: 142
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
以下是C语言代码:
#include <stdio.h>
#include <math.h>
int main()
{
int n, i;
float h, sum;
printf("请输入要计算的落地次数:");
scanf("%d", &n);
h = 100; // 初始高度为100米
sum = h; // 第一次落地和反弹的路程为100米
for(i = 2; i <= n; i++)
{
h = h / 2; // 每次落地后反弹的高度
sum = sum + 2 * h; // 每次落地和反弹的路程
}
printf("第%d次落地共经过%.3f米\n", n, sum);
h = h / 2; // 第n次反弹的高度
printf("第%d次反弹高度为%.3f米\n", n, h);
return 0;
}
根据题目可得,球在第五次落地时共经过100 + 2 * 50 + 2 * 25 + 2 * 12.5 + 2 * 6.25 + 2 * 3.125 = 299.219 米,第十次落地时共经过100 + 2 * 50 + 2 * 25 + 2 * 12.5 + 2 * 6.25 + 2 * 3.125 + 2 * 1.5625 + 2 * 0.78125 + 2 * 0.390625 + 2 * 0.1953125 + 2 *0.09765625 = 399.609 米。第五次反弹的高度为 3.125 米,第十次反弹的高度为 0.09765625 米。
阅读全文