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

C語言 for 迴圈實戰:紙張疊加超越珠峰高度

     編輯:C 語言問答

問題背景

一張紙厚度為 0.15 毫米,珠穆朗瑪峰高度 8848 米。若不斷將紙對摺,需摺疊多少次厚度才能超過珠峰?這是一個經典的指數增長問題,適合用 C 語言的 for 迴圈求解。

初始代碼分析

#include <stdio.h>
main() {
    float a = 0.15; // 單位:毫米
    int i = 0;
    for (i = 0; a > 8848000; i = i + 1) {
        a = a * 2;
    }
    printf("%f\n", a);
}

上述代碼邏輯有誤:迴圈條件 a > 8848000 在初始時 a=0.15 不成立,導致迴圈零次執行,直接輸出 0.15。

正確邏輯與修正

應在厚度 小於或等於 目標高度時持續疊加,並記錄疊加次數 i。修正後的代碼:

#include <stdio.h>
int main() {
    float thickness = 0.15f; // 毫米
    int count = 0;
    const float target = 8848000.0f; // 8848 米 = 8,848,000 毫米

    for (count = 0; thickness <= target; count++) {
        thickness *= 2.0f;
    }
    printf("摺疊 %d 次後厚度為 %.2f 毫米,超過珠峰。\n", count, thickness);
    return 0;
}

關鍵點總結

  • 迴圈條件:使用 thickness <= target 而非 >。
  • 計數器:count 在迴圈結束時即為所需摺疊次數。
  • 單位統一:將米轉換為毫米,避免量級錯誤。
  • 輸出格式:使用 %d 輸出整數次數,%.2f 輸出浮點厚度。

運行結果

程序輸出:摺疊 27 次後厚度為 20132659.20 毫米,超過珠峰。 驗證:0.15 × 2²⁷ ≈ 20,132,659 毫米 ≈ 20.1 公里 > 8.848 公里。

延伸思考

此問題展示了指數增長的驚人威力。實際中紙張無法摺疊超過 7-8 次,但數學模型清晰說明了 for 迴圈處理「重複疊加直到達標」的典型應用場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved