模擬出租車計價規則:
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); }
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); }
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; }
consume_mile、consume_time、consume_all 為全局變量,函數間直接讀寫,簡化參數傳遞。(int)(x + 0.5) 實現浮點數四捨五入取整。main 內部聲明 void Mile(float); void Time(int); 符合 C89 標準。round() 函數(math.h)替代手動四捨五入,語義更清晰。