首页 > 试题广场 >

高空坠球:皮球从height(米)高度自由落下,触地后反弹到

[问答题]

高空坠球:皮球从height(米)高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?输出保留一位小数。试编写相应程序。

推荐
#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);
   }
}

发表于 2018-05-06 21:25:22 回复(0)
#include<stdio.h>
int main(void)
{double height,lenght=0,h;
int n,i;
printf("输入初始高度=");
scanf("%lf",&height);
printf("输入弹跳次数");
scanf("%d",&n);
h=height;
for(i=1;i<=n;i++)
{h=h*0.5;
lenght=lenght+3*h;
 }
 printf("h=%.1lf lenght=%.1lf",h,lenght);
 return 0;
}
发表于 2019-10-05 13:00:26 回复(0)
/*
高空坠球

总共经过了多少距离,使用等比数列求和公式
第几次弹多高,类似于利润的年增长率,小学思想  基数*(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;
}
编辑于 2020-03-02 11:54:25 回复(1)