洛谷上学迟到问题
#include <stdio.h>
int main()
{ int a,b,c,s,v;
scanf("%d %d",&s,&v);
a=(480-(s/v+10));
b=a/60;
c=a%60;
if(b<10||c<10)printf("0%d:0%d\n",b,c);
else{printf("%d:%d\n",b,c);
}0
return 0;
}
需要考虑行走时间不是刚好一分钟的情况,以及提前出发的时间是在昨天的情况。
修改如下:
参考链接:
#include <stdio.h>
int main()
{ int a,b,c,s,v;
scanf("%d %d",&s,&v);
a=(480-(s/v+10));
// https://blog.csdn.net/qq_34988204/article/details/132071831
// https://blog.csdn.net/cc_love_program/article/details/116569820
if(s%v!=0){ // 如果行走时间没有刚好凑足分钟,则分钟数需要再减去1
a-=1;
}
if(a>=0){ // 如果只需要在今天提前出发
b=a/60;
c=a%60;
}else{ // 如果需要在昨天提前出发
a=960+a; // 计算需要在昨天8点 过多少分钟出发,960为昨天8点到凌晨0点前的分钟数:(24-8)*60=16*60=960
b=8+a/60; // 计算 从昨天8点 后的哪个小时出发
c=a%60; // 计算 哪个小时的多少分钟出发
}
// 使用%02d:%02d打印 两位数的时间
printf("%02d:%02d",b,c);
return 0;
}
//
【以下回答由 GPT 生成】
你的代码几乎没有问题,只是在计算 a
的时候,你的计算公式有一点错误。应该是 a=(480-(s/v)*60-10);
而不是 a=(480-(s/v+10));
。
以下是修改后的代码:
#include <stdio.h>
int main()
{
int a,b,c,s,v;
scanf("%d %d",&s,&v);
a=(480-(s/v)*60-10);
b=a/60;
c=a%60;
if(b<10||c<10)
printf("0%d:0%d\n",b,c);
else
printf("%d:%d\n",b,c);
return 0;
}
请尝试使用修改后的代码,并重新运行。这应该能够解决你的问题。
【相关推荐】