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

C語言實戰:出租車計價器邏輯實現

     編輯:關於C語言

需求分析

模擬出租車計價規則:

  • 里程費:起步 3 公里 10 元;3~13 公里每公里 2 元(不足 1 公里按 1 公里計);13 公里以上每公里 3 元。
  • 等待費:5 分鐘內免費;超過 5 分鐘,每 5 分鐘 2 元(不足 5 分鐘按 5 分鐘計)。
  • 總費用:里程費 + 等待費,四捨五入取整。

核心函數設計

1. Mile(float mile) — 里程費計算

void Mile(float mile)
{
    if (mile <= 3)
    {
        consume_mile = 10; // 起步價
    }
    else if (mile <= 13) // 3~13 km
    {
        mile = mile - 3;
        consume_mile = ((int)(mile + 0.5)) * 2 + 10; // 四捨五入後乘單價
    }
    else // >13 km
    {
        mile = mile - 13;
        consume_mile = ((int)(mile + 0.5)) * 3 + 30; // 10+20+超出部分
    }
    printf("consume_mile=%f\n", consume_mile);
}

2. Time(int time) — 等待費計算

void Time(int time)
{
    if (time < 5)
    {
        consume_time = 0;
    }
    else
    {
        if (time % 5 == 0)
            consume_time = (time / 5) * 2;
        else
            consume_time = (time / 5 + 1) * 2; // 向上取整
    }
    printf("consume_time=%i\n", consume_time);
}

3. main() — 主流程

int main()
{
    float mile; int time;
    scanf("%f %i", &mile, &time);
    printf("輸入成功:mile=%f time=%i\n", mile, time);

    Mile(mile);
    Time(time);

    consume_all = (int)(consume_time + consume_mile + 0.5); // 總費用四捨五入
    printf("consume_all=%i\n", consume_all);
    return 0;
}

關鍵技術點

  1. 全局變量共享數據:consume_mile、consume_time、consume_all 為全局變量,函數間直接讀寫,簡化參數傳遞。
  2. 四捨五入技巧:(int)(x + 0.5) 實現浮點數四捨五入取整。
  3. 分段函數思想:里程費分三段,等待費分兩段,典型的分支結構應用。
  4. 函數聲明前置:main 內部聲明 void Mile(float); void Time(int); 符合 C89 標準。

潛在改進方向

  • 移除全局變量,改用返回值或指針參數傳遞結果,提高模塊化程度。
  • 增加輸入合法性檢查(如負數、非數字輸入)。
  • 將費率參數化(常量或配置文件),便於調整政策。
  • 使用 round() 函數(math.h)替代手動四捨五入,語義更清晰。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved