yaocupt @ 2024-12-04 22:00:57
#include <stdio.h>
#include <stdlib.h>
int s,v,hh,mm,a,b,c;
int main()
{
scanf("%d %d",&s,&v);
if(s%v==0)
{
a=s/v;
}
else
{
a=s/v+1;
}
b=a%60;
if(a>=60)
c=a/60;
else
c=1;
while(c>24)
{
c=c-24;
}
if(c>8)
{
hh=24-(c-8);
}
else
{
hh=8-c;
}
if(b==0)
{
mm=0;
}
else
{
mm=60-b;
}
if(mm>=0&&mm<=9)
{
mm=60-(10-mm);
if(hh==0)
hh=23;
else
hh--;
}
else
mm=mm-10;
printf("%02d:%02d",hh,mm);
return 0;
}
by zzhengxi @ 2024-12-04 22:05:36
@yaocupt 能写个注释吗 还有,这题要用循环???
by ws778 @ 2024-12-06 16:09:44
@zzhengxi 不用循环
by yaocupt @ 2024-12-06 20:45:56
#include <stdio.h>
#include <stdlib.h>
int s,v,hh,mm,a,b,c;//a为用时总分钟数,b为8:00应减去的分钟部分,c为应减去的小时部分,hh为出发时间的小时部分,mm为分钟部分
int main()
{
scanf("%d %d",&s,&v);//输入路程速度
if(s%v==0)
{
a=s/v;
}
else//如果不能整除则向上取整
{
a=s/v+1;
}
a=a+10;//加上垃圾分类的时间
b=a%60;
if(a>=60)
c=a/60;
else//如果不满60分钟,令c为1使出发时间的小时部分为7
c=1;
if(c>24)//如超过一天,减去24小时
{
c=c-24;
}
if(c>8)
{
hh=24-(8-c);
}
else
{
hh=8-c;
}
if(b==0)//如应减去的分钟部分为0,则出发时间的分钟部分为00
{
mm=0;
}
else
{
mm=60-b;
}
printf("%02d:%02d",hh,mm);//输出
return 0;
}
@zzhengxi
by yaocupt @ 2024-12-06 20:47:05
@zzhengxi感觉逻辑没错,但是就是只有30分...
by zzhengxi @ 2024-12-07 13:44:26
能写个注释吗
by yaocupt @ 2024-12-07 22:33:41
@zzhengxi写了的,在上上一条回复
by zzhengxi @ 2024-12-08 17:53:16
@yaocupt
if
、for
、else
等在后面只有一条语句时,可以不加大括号。if else
也算为一条语句。例如:
if(n % 2 == 0){
cout << "Yes";
}
可以写成
if(n % 2 == 0)
cout << "Yes";
或
if(n % 2 == 0) cout << "Yes";
a = a + 2
可以写成a += 2
,以此类推。
i = i + 1
等同于i++
或i += 1
。
-----------分隔线-----------
注意你的变量有可能是负数。
代码自己改