洛谷题单中顺序结构里的上学迟到P5707

该博客介绍了一个C语言程序,用于计算根据路程和速度得出的行驶时间,并考虑了是否需要跨天的情况。程序首先读取路程和速度,然后计算总时间,包括可能的上取整。接着,程序根据总时间判断是否在同一天内完成,输出相应的小时和分钟。如果需要跨天,则计算相对于前一天出发的时间。博客中包含了详细的注释和逻辑解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>

int main()
{
    int s,v,k,d,sum=10;//s为路程,v为速度,sum为所用的总时间(目前为止垃圾分类的十分钟)
    scanf("%d%d",&s,&v);//输入路程与速度
    sum+=s/v;//路程除以速度即得时间,总时长还要加上路上的时间
    if(s%v!=0)
        sum++;//如果路程与时间没有整除,则所用时间再加一分钟(上取整)
    k=sum/60;
    d=sum-k*60;//路上用时即为k小时d分钟
    if(sum<480)//所用总时长小于480分钟,即当天到达,此时k<8
    {
        if(d!=0)
        {
            if(d<51)
                printf("0%d:%d",7-k,60-d);
            else
                printf("0%d:0%d",7-k,60-d);//当d<51时,60-d为两位数,否则60-d为一位数
        }
        else
            printf("0%d:00",8-k);//若d=0即sum刚好被60整除,没有用到额外的一小时
    }
    else//需提前一天出发,此时k>=8
    {
        k-=8;//即此时显示对于前一天0点需提前多少个小时
        if(k<14)//即23-k为两位数
        {
            if(d!=0)
            {
                if(d<51)
                    printf("%d:%d",23-k,60-d);
                else
                    printf("%d:0%d",23-k,60-k);
            }
            else
                printf("%d:00",24-k);
        }
        else//即23-k为一位数
        {
            if(d!=0)
            {
                if(d<51)
                    printf("0%d:%d",23-k,60-d);
                else
                    printf("0%d:0%d",23-k,60-k);
            }
            else
                if(k==14)//此时24-k为两位数
                printf("%d:00",24-k);
                else//即k>14
                {
                    printf("0%d:00",24-k);
                }
        }
    }
    return 0;
}
仅提供一种思路,大概就是考虑周全的问题。一开始做的时候60分...也不知道错哪里了,然后现在重新再做一次(一边做一遍注释)就过了。希望能有所帮助~不要变成棕名噢(友情提示.jpg)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值