如何用C语言完成这个问题 一个球从100米的高处自由落下,触地后反弹到原高度的一半,问在第n次落地时?

一个球从100米的高处自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?注意:n从键盘输入

C语言代码如下:

#include<stdio.h>

int main() {

    double d = 100; // 皮球在空中经过的距离,第一次落地时为100m

    double h = 50; // 皮球反弹的高度,第一次反弹后为50m

    int i, n;

    scanf("%d", &n);

    for (i = 2; i <= n; i++) { // 从第二次落地开始

        d += h * 2; // 两次落地之间经过的距离为上次反弹高度的2倍

        h = h / 2; // 下次反弹高度变为原来的一半

    }

    printf("第%d次落地时一共经过%fm, 第%d次反弹高度为%fm\n", n, d, n, h);

    return 0;

}

运行结果如下:

追问

这个i表示的是什么呢

追答

i表示落地或反弹次数,i从2开始,一直遍历到n
就得到第n次落地时经过的距离和第n次反弹的高度

温馨提示:答案为网友推荐,仅供参考
相似回答