Addams @ 2023-10-16 18:14:07
#include <stdio.h>
int main()
{
int s, v, t, h, m, HH = 7, MM = 60;
scanf("%d %d", &s, &v);
// 计算路程上花费的时间
if (s % v == 0)
{
t = s / v + 10;
}
else
{
t = s / v + 11;
}
// 确保提前的时间不会超过一天
while (t >= 1440)
{
t = t - 1440;
}
// 将时间转化为几小时几分钟
h = t / 60;
m = t % 60;
// 计算最晚出发时间
HH = HH - h;
MM = MM - m;
// 输出
printf("%02d:%d", HH, MM);
return 0;
}
by farbehind @ 2023-10-16 23:30:30
时间不超过一天是题目给的 本题三个关键点 1.s能否整除v,不能整除需要加一 2.过了8h,需要到昨天,总时间变成了8+24=32h 计算时需要以8h为分界点 3.输出两位,不足要用0不足 下面是我的代码
#include<stdio.h>
int main(){
int s,v,t1,t2,t3;
scanf("%d%d",&s,&v);
//判断是否路程整除速度
if(s%v==0)
t1=s/v+10;
else
t1=s/v+11;
//以480min为分界点
if(t1<480)
{t1=480-t1;
t2=t1/60;
t3=t1%60;
}
else
{t1=1920-t1;
t2=t1/60;
t3=t1%60;
}
//满足输出两位
if(t2<10&&t3>=10)
printf("0%d:%d",t2,t3);
else if(t2<10&&t3<10)
printf("0%d:0%d",t2,t3);
else
printf("%d:%d",t2,t3);
return 0;}
by hhhhhhoioi @ 2023-10-22 15:58:02
@farbehind 有没有t2>=10 t3<10的情况呢?
by farbehind @ 2023-10-28 00:01:32
@hhhhhhoioi 有的有的,是我欠考虑了
else if(t2>=10&&t3<10)
printf("%d:0%d",t2,t3);
再加一下这个就行