You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言停车收据打印程序优化:分钟补零与车辆全称显示

C语言停车费打印程序输出优化方案

优化需求

  • 分钟数为个位数时自动补0,避免空位
  • 车辆类型输出完整名称(Car/Bus/Truck)而非缩写(C/B/T)

当前输出

Type of vehicle? (C - Car, B - Bus, T - Truck): C
Hour vehicle entered lot? (1 - 24): 6
Minute vehicle entered lot? (1 - 60): 2
Hour vehicle left lot? (1 - 24): 9
Minute vehicle left lot? (1 - 60): 3


---PARKING LOT CHARGE---

TYPE OF VEHICLE: C
TIME-IN:            6: 2
TIME-OUT:           9: 3
                 -------
PARKING TIME:       3: 1
ROUNDED TOTAL:         3
                 -------
TOTAL CHARGE:     $0.00

期望输出

Type of vehicle? (C - Car, B - Bus, T - Truck): C
Hour vehicle entered lot? (1 - 24): 6
Minute vehicle entered lot? (1 - 60): 2
Hour vehicle left lot? (1 - 24): 9
Minute vehicle left lot? (1 - 60): 3


---PARKING LOT CHARGE---

TYPE OF VEHICLE: Car
TIME-IN:            6:02
TIME-OUT:           9:03
                 -------
PARKING TIME:       3:01
ROUNDED TOTAL:         3
                 -------
TOTAL CHARGE:     $0.00

修改后的完整代码

#include<stdio.h>

int main () {

    int hourIn, minuteIn, hourOut, minuteOut, parkH, parkM, rounded;
    float charge;
    char type;
    char vehicleName[10]; // 存储车辆全名的变量

    printf("Type of vehicle? (C - Car, B - Bus, T - Truck): ");
    scanf("%c", &type);
    printf("Hour vehicle entered lot? (1 - 24): ");
    scanf("%d", &hourIn);
    printf("Minute vehicle entered lot? (1 - 60): ");
    scanf("%d", &minuteIn);
    printf("Hour vehicle left lot? (1 - 24): ");
    scanf("%d", &hourOut);
    printf("Minute vehicle left lot? (1 - 60): ");
    scanf("%d", &minuteOut);

    if (minuteOut < minuteIn) {
        minuteOut += 60;
        hourOut -= 1;
        parkH = hourOut - hourIn;
        parkM = minuteOut - minuteIn;
    }
    else {
        parkH = hourOut - hourIn;
        parkM = minuteOut - minuteIn;
    }
   
    if (parkM >= 50) {
        rounded = parkH + 1;
    }
    else {
        rounded = parkH;
    }

    switch (type) {
        case 'C':
            if (rounded <= 3) {
                charge = rounded * 0;
            }
            else {
                charge = (rounded - 3) * 1.50;
            }
            sprintf(vehicleName, "Car");
            break;
        case 'T':
            if (rounded <= 2) {
                charge = rounded * 1;
            }
            else {
                charge = (rounded - 2) * 2.30 + 2;
            }
            sprintf(vehicleName, "Truck");
            break;
        case 'B':
            if (rounded <= 1) {
                charge = rounded * 2;
            }
            else {
                charge = (rounded * 2) *  3.70 + 2;
            }
            sprintf(vehicleName, "Bus");
            break;
        default:
            sprintf(vehicleName, "Unknown");
            charge = 0.0;
    }
   
    printf("\n\n");
    printf("---PARKING LOT CHARGE---\n\n");
    printf("TYPE OF VEHICLE: %s\n", vehicleName);
    printf("TIME-IN:           %2d:%02d\n", hourIn, minuteIn);
    printf("TIME-OUT:          %2d:%02d\n", hourOut, minuteOut);
    printf("                 -------\n");
    printf("PARKING TIME:      %2d:%02d\n", parkH, parkM);
    printf("ROUNDED TOTAL:        %2d\n", rounded);
    printf("                 -------\n");
    printf("TOTAL CHARGE:     $%-3.2f\n", charge);
   
    return 0;
}

修改说明

  1. 分钟补0:将所有输出分钟的格式符从%2d替换为%02d,该格式符会自动为个位数数字添加前导0,保证时间格式统一对齐。
  2. 车辆全名显示:新增vehicleName字符数组,在switch分支中为不同车辆类型赋值对应的全名,最后通过%s格式符输出;同时增加default分支处理无效输入,提升程序健壮性。

内容的提问来源于stack exchange,提问作者Mark David Semorio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 16:13:15