计算旅程时间,输入time1和time2(有效范围为0000到2359,不考虑出发时间晚于到达时间的情况),
时间: 2024-09-24 16:22:35 浏览: 46
好的,这是一个改进版的C语言程序,用于计算两个时间之间的有效旅程时间,并处理0000到2359的输入范围:
```c
#include <stdio.h>
#include <stdbool.h> // 引入布尔类型
// 定义结构体存储时间信息
struct Time {
int hours;
int minutes;
};
// 检查时间是否有效
bool is_valid_time(struct Time time) {
return (time.hours >= 0 && time.hours <= 23) && (time.minutes >= 0 && time.minutes <= 59);
}
// 函数计算两个时间的差值(保证旅程顺序)
void calculate_journey_time(struct Time time1, struct Time time2) {
if (time1.hours > time2.hours || (time1.hours == time2.hours && time1.minutes >= time2.minutes)) {
struct Time temp = time1;
time1 = time2;
time2 = temp;
}
if (is_valid_time(time1) && is_valid_time(time2)) {
struct Time total;
total.hours = time1.hours - time2.hours;
total.minutes = time1.minutes - time2.minutes;
// 当总分钟小于0时,表示需要进位一小时
if (total.minutes < 0) {
total.minutes += 60;
total.hours--;
}
printf("有效的旅程时间为: %02d:%02d", total.hours, total.minutes);
} else {
printf("无效的时间输入!");
}
}
int main() {
struct Time time1, time2;
printf("请输入第一个时间(0000-2359): ");
scanf("%d:%d", &time1.hours, &time1.minutes);
printf("请输入第二个时间(0000-2359): ");
scanf("%d:%d", &time2.hours, &time2.minutes);
calculate_journey_time(time1, time2);
return 0;
}
```
该程序首先定义了一个时间结构体,并检查输入时间的有效性。然后根据时间顺序调整输入,确保旅程时间的合理性。
阅读全文