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

進階版買房題:房價複利上漲,工程師還能買得起嗎?

     編輯:關於C語言

問題變體

承接上一題,若房價每年上漲 10% 改為複利計算(即每年漲幅在上一年房價基礎上),其他條件不變:年薪 40 萬、初始房價 200 萬、不吃不喝全存。請問這位工程師還能買得起房嗎?

數學模型

第 n 年房價 = 200 × 1.1^n(萬)
第 n 年總儲蓄 = 40 × n(萬)

我們需要找到最小整數 n 使得:40n ≥ 200 × 1.1^n

C語言求解程式

#include <stdio.h>
#include <math.h>

int main() {
    int i = 0, flag = 0;
    float salary = 40;
    float begin_value = 200;
    float rate = 0.1;
    float late_value = begin_value * (1 + rate); // 第一年複利後房價

    while (salary * i < late_value) {
        i++;
        late_value *= (1 + rate); // 複利:每年在上一年基礎上漲 10%
        
        // 防止無限迴圈:若工作 100 年還買不起,判定為不可能
        if (i > 100) {
            flag = 0;
            break;
        }
        flag = 1; // 只要進入迴圈且未超過 100 年,就設為可買
    }

    if (flag)
        printf("經過 %d 年後,軟體工程師可以買到房子!\n", i);
    else
        printf("嗨,工作輩子,軟體工程師都不能買到房子,好慘哦!\n");

    return 0;
}

執行結果分析

程式會輸出:嗨,工作輩子,軟體工程師都不能買到房子,好慘哦!

原因在於指數增長(房價)最終會超越線性增長(儲蓄)。我們可以列表驗證前幾年:

年份儲蓄(萬)房價(萬)差距
140220-180
5200322-122
10400519-119
208001346-546
50200023478-21478

差距越來越大,永無交點。

關鍵程式設計細節

  1. 複利計算:late_value *= (1 + rate) 等價於 late_value = late_value * 1.1,精準模擬複利。
  2. 終止條件:引入 flag 和 i > 100 保護,避免邏輯錯誤導致程式卡死。
  3. 浮點數比較:直接用 salary * i < late_value 判斷,因數值不大,精度足夠。

現實啟示

這道題生動說明了指數增長的威力。在現實中,若收入增長跟不上資產價格增長(特別是複利型增長),單靠儲蓄極難實現階層躍升。這也是為何現代金融強調「投資理財」、「複利效應」以及「槓桿(貸款)」的原因。

複利版程式執行結果
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved