高空坠球问题
皮球从 height(米)高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。 问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?输出保留1位小数。
输入格式
下落高度,反弹次数
输出格式
皮球在第n次落地时,在空中一共经过的距离,第n次反弹的高度,输出保留1位小数
输入样例
20 3
输出样例
50.0 5.0
代码
代码如下:
#include<stdio.h>
float height(float n);
int main(void) {
float n1;
int n, i;
printf("请输入下落高度\n");
scanf("%f", &n1);
printf("请输入反弹次数\n");
scanf("%d", &n);
if(n1 >= 0) {
float sum = 0, n2 = 0, h = 0;
for(i = 1; i <= n; i++) {
sum =n1+ n2+sum;
n2 = n1/2.0;
h = n1;
n1 = n2;
}
printf("皮球在第%d次落地时,在空中一共经过%.1f距离\n",n,sum);
printf("第%d次反弹高度为%.1f米。\n",n, h);
}
else {
printf("请输入一个大于0的数\n");
}
return 0;
}
分析
下落次数 1 2 3
反弹高度 0 10.0 5.0
一共在空中的高度 20.0 30.0 50.0