这个c语言该如何编写

皮球从h(米)高度自由落下,触地后反弹到原高度的一半,再落下,
再反弹••如此反复。求皮球在第口次落地时,在空中一共经过多少距离?
第n次反弹的高度是多少?输出保留1位小数。要求定义并调用函数
distance (h,n)计算皮球在第n次落地时,在空中经过的总路程;定义并调
用 high Ch,n)计算皮球第口次反弹的高度。

参考如下:


#include <stdio.h>

double high(double h,int n)
{
    int i=0;
    while(i<n)
    {
        h/=2;
        i++;
    }
    return h;
}

double distance(double h,int n)
{
    int i=1;
    double s = 0;
    double a;

    a = h;
    while(i <=n)
    {
        s += 2*a;//弹起和落下,但是第一次没有弹起,所以后面要减去多加的M
        i++;
        a = high(h,i);
    }
    s -= h; //减去第一次h
    return s;
}


int main()
{
    int n;
    double h,s = 0;
    scanf("%lf %d",&h,&n);
    
    printf("总距离:%f",distance(h,n));
    return 0;
}