我正在尝试制作一个倒计时器,由于某种原因它似乎没有执行(小时> = 1) 正确陈述 - 如果我发表评论
--Hour;
Minute = Minute +60;
程序从60开始精细倒计时,然后每分钟减少一分钟并重新开始60秒...有人可以向我解释为什么小时减量不想工作?我是c ++和编程的新手,所以如果你能保持尽可能简单的话 谢谢。 以下代码段:
while (Hour >= 1)
{
while (Minute >= 1)
{
while (Second >= 1)
{
Sleep(1000);
--Second;
cout << Hour << " hours, " << Minute << " minutes, " << Second << " seconds;\n";
}
Second = Second + 60;
--Minute;
}
Minute = Minute + 60;
--Hour;
}
答案 0 :(得分:0)
首先,为了使您的代码更加一致,我建议您在打印当前时间并将所有比较更改为--Second;
后移动Time >= 0
。
int main(void)
{
int Hour = 1;
int Minute = -1;
int Second = -1;
while (Hour >= 0)
{
while (Minute >= 0)
{
while (Second >= 0)
{
Sleep(1000);
cout << Hour << " hours, "
<< Minute << " minutes, "
<< Second << " seconds;" << endl;
--Second;
}
Second += 60;
--Minute;
}
Minute += 60;
--Hour;
}
return 0;
}
现在,当您运行程序时,只要Second == -1
,这意味着当前分钟内不再有剩余秒数。当Minute == -1
您在一小时内没有剩余时间,以及Hour == -1
您的时间已经完全消失时。
在C ++中,循环在每次运行开始时进行评估。上面的代码减去分钟,然后是秒,然后显示减去小时数之前的时间。
如果您的分钟和秒最初初始化为0,则以下代码的行为与上述代码相似(可能没有用)。
while (Hour > 0)
{
Minute += 60;
--Hour;
while (Minute > 0)
{
Second += 60;
--Minute;
while (Second > 0)
{
--Second;
//sleep(1);
cout << Hour << " hours, "
<< Minute << " minutes, "
<< Second << " seconds;" << endl;
}
}
}
这段代码在显示时间之前递减小时,然后是分钟,然后是秒。第二个示例的一个优点是Hour
,Minute
和Second
始终为正,因此您可以将其定义替换为unsigned int
。
编辑:正如BenVoigt指出的那样,上面的第二段代码会很高兴地写出大于60的分钟和秒数(可能不是你想要的)。
希望这些例子有所帮助。
附加说明:在C ++中,您可以使用Minute += 60;
代替Minute = Minute + 60;
。这只是简写。