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; }
修改说明
- 分钟补0:将所有输出分钟的格式符从
%2d替换为%02d,该格式符会自动为个位数数字添加前导0,保证时间格式统一对齐。 - 车辆全名显示:新增
vehicleName字符数组,在switch分支中为不同车辆类型赋值对应的全名,最后通过%s格式符输出;同时增加default分支处理无效输入,提升程序健壮性。
内容的提问来源于stack exchange,提问作者Mark David Semorio
相关产品推荐
相关产品推荐

