用c怎么写上面的问题
时间: 2024-09-26 19:15:14 浏览: 19
在C语言中,你可以使用`struct`来代表时间,并利用`atoi`函数解析用户输入的字符串。以下是基本的步骤:
```c
#include <stdio.h>
#include <string.h>
// 定义结构体表示时间
typedef struct {
int hours;
int minutes;
} Time;
// 函数用于解析字符串为时间
Time parse_time(char* str) {
char* hour_str = strtok(str, ":");
char* minute_str = strtok(NULL, ":");
return (Time){ atoi(hour_str), atoi(minute_str) };
}
// 主函数
int main() {
char input[100];
printf("请输入出发时间和到达时间(格式:HH:MM HH:MM):");
fgets(input, sizeof(input), stdin); // 注意去掉末尾的'\n'
input[strcspn(input, "\n")] = '\0'; // 移除fgets引入的换行符
Time start = parse_time(input);
Time end = parse_time(strtok(NULL, " ")); // 使用strtok分隔两次
// 计算时间差
Time diff = {0, 0};
diff.hours = end.hours - start.hours;
if (diff.hours < 0) {
diff.hours += 24; // 跨越一天的情况处理
}
diff.minutes = end.minutes - start.minutes;
if (diff.minutes < 0 || (diff.minutes == 0 && diff.hours < 0)) {
diff.minutes += 60; // 如果分钟也小于0,则说明跨过了下一个小时
diff.hours--;
}
// 输出结果
printf("旅程时间为:%02d:%02d\n", diff.hours, diff.minutes);
return 0;
}
```
在这个C程序中,我们首先获取用户输入,然后解析输入字符串,计算时间差,注意了对跨天情况的特殊处理。