不用函数 编写C 程序计算航班的飞行时间,输入24进制的起飞和降落时间,输出飞行时间,例如: 起飞时间:8:30 降落时间:10:15 飞行时间:1:45 提示:应考虑起降时间是否在同一天
时间: 2024-11-30 21:20:28 浏览: 20
在C语言中,你可以使用结构体、指针以及一些基本算术运算来编写这个程序。这里是一个简单的示例,假设我们只关心同一天内的飞行时间,而不涉及跨日的情况:
```c
#include <stdio.h>
#include <string.h>
// 定义一个结构体表示时间点
typedef struct {
char hours[3]; // 小时,格式为两位数
char minutes[3]; // 分钟,格式为两位数
} Time;
// 函数用于将24小时制字符串转换成Time结构体
Time time_from_string(char* str) {
Time t;
sscanf(str, "%2d:%2d", t.hours, t.minutes);
return t;
}
// 计算两个时间之间的差值
Time calc_flight_time(Time start, Time end) {
int flight_hours = (end.hours - start.hours) % 24; // 小于0表示需要加一天
int flight_minutes = end.minutes + ((flight_hours * 60) - start.minutes); // 如果分钟超过60,则减去一天的分钟数
if (flight_minutes >= 60) {
flight_hours++;
flight_minutes -= 60;
}
return (Time){ .hours = flight_hours + (start.hours < 10 ? '0' : ''), .minutes = flight_minutes + (flight_minutes < 10 ? '0' : '') };
}
int main() {
char起飞[7], 到达[7];
printf("请输入起飞时间(格式:HH:MM):");
fgets(起飞, sizeof(起飞), stdin);
scanf("%*[^\n]"); // 清除换行符
Time start = time_from_string(起飞);
printf("请输入到达时间(格式:HH:MM):");
fgets(到达, sizeof(到达), stdin);
scanf("%*[^\n]"); // 清除换行符
Time end = time_from_string(到达);
Time flight_time = calc_flight_time(start, end);
printf("飞行时间:%02d:%02d\n", flight_time.hours, flight_time.minutes);
return 0;
}
```
阅读全文