高空坠球:皮球从height(米)高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?输出保留一位小数。试编写相应程序。
/*
高空坠球
总共经过了多少距离,使用等比数列求和公式
第几次弹多高,类似于利润的年增长率,小学思想 基数*(1+增长率)^n
author: a1bum
*/
#include<stdio.h>
#include<math.h>
int main(){
double height,n;
printf("please input value of height,n: ");
scanf("%lf%lf", &height,&n);
printf("sum of height: %.1lf\n", height+n*(n-1)/2);
printf("height[%d]: %.1lf", n,height*pow(0.5,n));
return 0;
}
#include <stdio.h> int main(void) { int i, n; int repeat, ri; double distance, height; scanf("%d", &repeat); for(ri = 1; ri <= repeat; ri++){ scanf("%lf%d", &height, &n); distance = height; while(n > 0){ height = height / 2; distance = distance + height * 2; n--; } distance = distance - height * 2; printf("distance = %.1f, height = %.1f\n", distance, height); } }