wlllxhq 2024-08-27 23:24 采纳率: 0%
浏览 3

下图问号标注的这句if语句没理解

如果输入时间是5:06那么换成分钟数应该是306 < 615/2,但是这个时候最近的应该是8:00 a.m.那班与输出结果不符。要不要换成(615/2-135),诚心求问,谢谢。

img

  • 写回答

1条回答 默认 最新

  • 吃不了席 2024-08-27 23:26
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    根据题目要求,我们需要将表格中的时间转换为从午夜开始的分钟数,并通过对用户输入的时间和分钟数进行比较来确定最近的起飞时间。首先,我们需要将用户输入的时间转换为分钟数,然后使用if语句进行比较。

    在这个例子中,用户输入的时间是13:15,转换为分钟数为13×60+15=795。我们需要将这个时间与表格中的起飞时间进行比较,找出最接近的起飞时间。

    根据表格,我们可以看到有以下起飞时间(以分钟数表示):

    • 8:00 a.m. = 480
    • 9:43 a.m. = 583
    • 11:19 a.m. = 679
    • 12:47 p.m. = 767
    • 2:00 p.m. = 840
    • 3:00 p.m. = 900
    • 4:08 p.m. = 968
    • 5:55 p.m. = 1155
    • 7:00 p.m. = 1140
    • 9:45 p.m. = 1305
    • 11:58 p.m. = 1438

    我们可以将这些时间分为两组,一组是上午的航班,另一组是下午的航班。对于上午的航班,我们可以通过计算相邻两个起飞时间的中数来判断最近的起飞时间。例如,对于8:00和9:43的起飞时间,它们的中数为(480+583)/2=531.5。如果用户输入的时间小于这个中数,那么最近的起飞时间就是8:00;否则,我们需要继续比较其他时间段。

    对于下午的航班,我们同样可以使用这种方法进行判断。例如,对于11:19和12:47的起飞时间,它们的中数为(679+767)/2=723。如果用户输入的时间大于这个中数且小于下一个时间段的中数,那么最近的起飞时间就是12:47;否则,我们需要继续比较其他时间段。

    根据这个方法,我们可以得到以下代码:

    #include <stdio.h>
    int main(void){
        int hour, minute;
        int input_minutes;
        printf("Enter a 24-hour time:");
        scanf("%d:%d", &hour, &minute);
        input_minutes = hour * 60 + minute;
        if (input_minutes < (615) / 2){
            printf("Closet departure time is 9:45 PM, arriving at 11:58 PM");
        } else if (input_minutes < (8 * 60 + 9 * 60 + 43) / 2){
            printf("Closet departure time is 8:00 AM, arriving at 10:16 AM");
        } else if (input_minutes < (9 * 60 + 43 + 11 * 60 + 19) / 2){
            printf("Closet departure time is 9:43 AM, arriving at 11:52 AM");
        } else if (input_minutes < (11 * 60 + 19 + 12 * 60 + 47) / 2){
            printf("Closet departure time is 11:19 AM, arriving at 1:31 PM");
        } else if (input_minutes < (12 * 60 + 47 + 14 * 60) / 2){
            printf("Closet departure time is 12:47 PM, arriving at 3:00 PM");
        } else if (input_minutes < (14 * 60 + 16 * 60) / 2){
            printf("Closet departure time is 2:00 PM, arriving at 5:55 PM");
        } else if (input_minutes < (16 * 60 + 55 + 17 * 60) / 2){
            printf("Closet departure time is 3:00 PM, arriving at 7:00 PM");
        } else if (input_minutes < (17 * 60 + 7 * 60 + 30) / 2){
            printf("Closet departure time is 4:08 PM, arriving at 9:20 PM");
        } else if (input_minutes < (19 * 60 + 30 + 21 * 60 + 45) / 2){
            printf("Closet departure time is 5:55 PM, arriving at 11:58 PM");
        } else if (input_minutes < (21 * 60 + 45 + 23 * 60) / 2){
            printf("Closet departure time is 7:00 PM, arriving at 11:58 PM");
        } else {
            printf("Closet departure time is 9:45 PM, arriving at 1:30 AM");
        }
        return 0;
    }
    

    这段代码会根据用户输入的时间,输出最接近的起飞时间和抵达时间。

    评论

报告相同问题?

问题事件

  • 修改了问题 8月27日
  • 创建了问题 8月27日