2.(程序题)编写C程序计算航班的飞行时间,输入24进制的起飞和降落时间,输出飞行时间。例如: 起飞时间:8:30 降落时间:10:15 飞行时间:1:45 注意:考虑起降时间不在同一天的情况。
时间: 2024-10-14 09:06:42 浏览: 43
为了编写C程序来计算航班的飞行时间,你需要首先解析输入的24小时制时间,并将它们转换成标准的结构表示日期和时间。然后,你可以通过减去起飞时间来得到飞行时间。下面是一个简单的示例代码片段:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TIME_FORMAT "%H:%M" // 时间格式定义
// 函数用来获取当前时间和字符串形式的时间
void get_current_time(char* time_str) {
time_t now = time(NULL);
struct tm* local_time = localtime(&now);
strftime(time_str, sizeof(time_str), TIME_FORMAT, local_time);
}
// 函数用于计算飞行时间
int calculate_flight_time(const char* takeoff_time, const char* landing_time) {
struct tm takeoff_tm;
struct tm landing_tm;
// 将输入字符串转换为struct tm
sscanf(takeoff_time, TIME_FORMAT, &takeoff_tm.tm_hour, &takeoff_tm.tm_min);
sscanf(landing_time, TIME_FORMAT, &landing_tm.tm_hour, &landing_tm.tm_min);
// 如果起飞时间大于降落时间,说明是跨天的
if (takeoff_tm.tm_hour > landing_tm.tm_hour || (takeoff_tm.tm_hour == landing_tm.tm_hour && takeoff_tm.tm_min >= landing_tm.tm_min)) {
landing_tm.tm_hour += 24; // 转换到第二天
}
// 计算飞行时间
int flight_hours = landing_tm.tm_hour - takeoff_tm.tm_hour;
int flight_minutes = landing_tm.tm_min - takeoff_tm.tm_min;
if (flight_minutes < 0) {
flight_minutes += 60;
flight_hours--;
}
return flight_hours * 60 + flight_minutes;
}
int main() {
char takeoff[TIME_FORMAT_LEN], landing[TIME_FORMAT_LEN];
printf("请输入起飞时间 (HH:MM): ");
fgets(takeoff, sizeof(takeoff), stdin); // 注意去除末尾的换行符
takeoff[strlen(takeoff)-1] = '\0'; // 去除末尾换行符
printf("请输入降落时间 (HH:MM): ");
fgets(landing, sizeof(landing), stdin);
landing[strlen(landing)-1] = '\0';
int flight_time = calculate_flight_time(takeoff, landing);
printf("飞行时间为:%02d:%02d\n", flight_time / 60, flight_time % 60);
return 0;
}
```
阅读全文