编写C 程序计算航班的飞行时间,输入24进制的起飞和降落时间,输出飞行时间,例如: 起飞时间:8:30 降落时间:10:15 飞行时间:1:45 拓展:考虑起降时间不在同一天的情况
时间: 2024-10-16 17:02:53 浏览: 61
在C程序中,计算两个24小时制时间之间的飞行时间,我们需要将它们转换成标准的时间差格式。我们可以使用结构体来表示时间,然后进行相应的加减运算。这里是一个简单的示例,假设用户输入的时间都是一天之内的:
```c
#include <stdio.h>
#include <stdlib.h>
// 时间结构体
struct Time {
int hour;
int minute;
};
// 将24小时制字符串转换为时间结构体
struct Time convert_to_time(const char* str) {
struct Time time;
sscanf(str, "%d:%d", &time.hour, &time.minute);
return time;
}
// 计算时间差
struct Time subtract_times(struct Time t1, struct Time t2) {
int minutes_diff = (t2.hour * 60 + t2.minute) - (t1.hour * 60 + t1.minute);
if (minutes_diff < 0) { // 如果时间差小于0,意味着是跨日的
minutes_diff += 1440; // 每天有24*60分钟,所以加上一整天的分钟数
}
return (struct Time){.hour = minutes_diff / 60, .minute = minutes_diff % 60};
}
int main() {
char起飞[6],降落[6];
printf("请输入起飞时间(24小时制格式): ");
fgets(起飞, sizeof(起飞), stdin);
scanf("%*[^\n]"); // 清除fgets读取到的多余字符
起飞[strlen(起飞)-1] = '\0'; // 去掉换行符
printf("请输入降落时间(24小时制格式): ");
fgets(降落, sizeof(降落), stdin);
scanf("%*[^\n]"); // 同上
降落[strlen(降落)-1] = '\0';
struct Time start = convert_to_time(起飞);
struct Time end = convert_to_time(降落);
struct Time flight_time = subtract_times(end, start);
printf("飞行时间为: %02d:%02d\n", flight_time.hour, flight_time.minute);
return 0;
}
```
如果你需要处理起降时间不在同一天的情况,上述代码已经足够,因为`subtract_times`函数会检查时间差是否小于0,并在必要时加上一整天的分钟数。
阅读全文