皮球从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;
}