C语言自由落体方面

2025-04-26 21:15:35
推荐回答(3个)
回答1:

#include 
int main()
{
double t = 0;
double h = 100;
int i;

t = h;
for(i = 2; i <= 10; i ++)
{
t+=h;//第i次落地时的总路程
h/=2;//第i-1次落地后,弹起的高度。
}
h/=2; //最后一次计算的是第9次反弹高度,再除2就是第10次的。
printf("%lf, %lf\n", t, h);

    return 0;
}

回答2:

#include 
int main(void) {
    double h = 100.0, sum = 0.0;
    int i = 0;
    while (i++ < 10) {
        sum += h;
        h /= 2;
        sum += h;
    }
    sum -= h; /*第10次落地后总路程就不再算了,所以把第10次反弹高度减去*/
    printf("总共经过%g米,第10次反弹%g米。\n", sum, h);
    return 0;
}

回答3:

m = m/2; y = y+m*3;
表明的是 一次弹起到最高点的时候经过的路程,问题是什么? 楼主可以看看 是第N次落地时候反弹多高,共经过多少米,楼主的计算公式比它多了个最后弹起的高度 ,应该减去最后一次弹起的高度!
举个例子 1000米的时候 弹起一次反弹多高呢 ? 显然是500 经过的路程呢 1000 按照楼主的计算公式就是1500米,多在了最高多计算了一次 减去就行了!改程序的循环部分 我还没没有想好 ,不过按下面这样改

#include
#include
int main()
{
float m,n,i,y=0;
scanf("%f%f",&m,&n);
for(i=0;i {
m=m/2;
y=y+m*3;
}
y -= m;
printf("%.2f %.2f\n",m,y);
}