首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C 語言物理建模:自由落體反彈高度與總路程計算

     編輯:關於C

問題

球從 100m 高度落下,每次落地反彈至原高度一半。求第 10 次落地時總路程、第 10 次反彈高度。

數學模型

  • 第 1 次落地:下落 100m;
  • 第 i 次落地 (i≥2):上升 h_{i-1} + 下落 h_{i-1} = 2*h_{i-1};
  • 反彈高度遞推:h_i = h_{i-1} / 2,h_0 = 100。

代碼實現

#include <stdio.h>

float totalDistance(float h, int n) {
    float s = 0;
    for (int i = 1; i <= n; ++i) {
        s += h;           // 下落
        h /= 2;           // 反彈高度
        if (i != n) s += h; // 非最後一次落地,加上升
    }
    return s;
}

float reboundHeight(float h, int n) {
    for (int i = 0; i < n; ++i) h /= 2;
    return h;
}

int main() {
    int n;
    printf("請輸入落地次數: ");
    scanf("%d", &n);
    float h = 100.0f;
    printf("第 %d 次反彈高度: %.6f m\n", n, reboundHeight(h, n));
    printf("第 %d 次落地總路程: %.6f m\n", n, totalDistance(h, n));
    return 0;
}

第 10 次結果

第 10 次反彈高度: 0.097656 m
第 10 次落地總路程: 299.804688 m

通用公式(幾何級數)

  • 總路程 S_n = 100 + 2*100*(1 - (1/2)^{n-1}) (n≥2);
  • 反彈高度 h_n = 100 * (1/2)^n。
  • 當 n→∞,總路程趨近 300m。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved