小明要做一个跑步训练。
初始时,小明充满体力,体力值计为 10000。如果小明跑步,每分钟损耗
600 的体力。如果小明休息,每分钟增加 300 的体力。体力的损耗和增加都是均匀变化的。
小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循环。
如果某个时刻小明的体力到达 0,他就停止锻炼。
请问小明在多久后停止锻炼。为了使答案为整数,请以秒为单位输出答案。
答案3880,问题请看代码注释
//跑步训练
//3880
public class Main03 {
public static void main(String[] args) {
int tl = 10000;
boolean b = true;
int time = 0;
while (true) {
//体力为0
if (tl<600&&b) { //将判断换成tl==0不行吗?
System.out.println(time*60+tl/10); //为什么要加tl/0
break;
}
if (b) {
tl-=600;
b=false;
time++;
}else{
tl+=300;
b=true;
time++;
}
}
}
}
麻烦解释下,没看明白
因为体力不会刚刚好等于0,所以不使用=0去判断。
并且他那里是用的<600且b为true,也就是剩余体力不到600的时候,正好下一分钟要进行跑步。这个时候这一分钟步是跑不完的,所以又用tl/10,这里的10是没秒消耗的体力(600/60)
望采纳,点击右侧采纳即可:
程序是模拟小明跑步锻炼的情况。
初始体力值为10000,跑步每分钟消耗600体力,休息每分钟增加300体力。
while循环:当体力值小于600时,输出(当前时间 x 60 + 剩余体力值 ÷ 10)。此时跑步锻炼结束。
否则,如果此时正在跑步(b为true),就减少600体力,切换到休息状态(b为false);如果此时正在休息,就增加300体力,切换到跑步状态(b为true)。
最终的答案是3880,即小明跑步锻炼的总时间。
参考如下,还望采纳:
主要思路:
1、定义了一个变量 tl 表示当前体力值,初始值为 10000
2、定义了一个变量 b 表示当前是否在休息,初始值为 true,表示开始是在休息的
3、定义了一个变量 time 表示已经跑步的时间,初始值为 0
4、然后通过一个 while 循环,每次循环模拟一分钟,并更新当前体力值。
5、如果当前体力值小于 600 且正在跑步,则跳出循环,并输出当前已经跑步的总时间加上剩余的十分之一分钟。
6、如果当前正在跑步,则当前体力值减少 600,并将 b 改为 false,表示开始休息。
7、如果当前正在休息,则当前体力值增加 300,并将 b 改为 true,表示开始跑步。
8、每次循环完成后,将 time 加 1,表示已经过了一分钟。
public class Main03 {
public static void main(String[] args) {
// 定义人的体力,初始值为10000
int tl = 10000;
// 定义一个布尔类型的变量b,表示当前是否在跑步,初始值为true
boolean b = true;
// 定义记录跑步时间的变量,初始值为0
int time = 0;
// 使用while循环,模拟跑步的过程
while (true) {
// 当体力小于600且当前在跑步时
if (tl < 600 && b) {
// 输出跑步结束的总时间(单位:秒)
// 其中time * 60 表示跑步时间(以分钟为单位)转换为以秒为单位的数值
// tl / 10 表示剩余的体力(以千卡为单位)转换为以卡为单位的数值
System.out.println(time * 60 + tl / 10);
break; // 退出循环
}
// 当前在跑步
if (b) {
tl -= 600; // 体力减少600(千卡)
b = false; // 修改当前状态为不在跑步
time++; // 时间加1(分钟)
} else {
tl += 300; // 体力增加300(千卡)
b = true; // 修改当前状态为在跑步
time++; // 时间加1(分钟)
}
}
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话: