一球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第n次落地时,共经过多少米?第n次反弹多高?(小数点后保留5位)

//球落地反弹
#include <stdio.h>
#define H0 100
#define K 2*H0//第n次往返经过的路程位2*(1/2)^(n-1)*H0 = (2*H0) * (1/2)^(n-1),
               //则可令常系数k = 2*H0 
int main(){
    int n;
    int m;
    float distance = H0;
    float distance_th = H0;
    float delta = K;
    scanf("%d",&n);
    m = n;
    while(--n){
    distance += 1/2.0*delta;
    delta /= 2;
    }
    while (m--)
    {
        distance_th /= 2;
    }
    

    printf("共经过%.5f米\n",distance);
    printf("第%d次反弹%.5f米",n,distance_th);
}
posted @ 2023-07-09 14:09  xuchaoxin1375  阅读(21)  评论(0)    收藏  举报  来源