#include <iostream>
int main()
{
float x, y;
while (true)
{
cin >> x;
if (x == y)
break;
y = x;
}
return 0;
}
这是我输入的两个连续数字相同后应该中断的循环。我有两个问题,我很感激你的帮助。
第一,这看起来是解决任务的最有效方式吗?
其次,声明(float x=?, y=?
)时x和y没有赋值吗?具体来说,当第一次输入循环时,y
不应该有一些值,以便与x
(x == y
)进行比较?
答案 0 :(得分:1)
取决于“高效”的含义。从“在运行时使用尽可能少的CPU”的意义上来说,它并不是最有效的,但如果程序花费99.999%的时间等待用户输入,这几乎不重要。
不,你是对的。这是>>> date(1962, 10, 16).strftime('%-m %B, %Y')
'10 October, 1962'
未初始化的问题(通常,使用未初始化的变量是代码中的错误)。你必须重新构建你的逻辑以解决这个问题。
如果您只想让代码更短或更简单,您可以执行以下操作:
y
答案 1 :(得分:1)
你在做什么看起来很好(除了缺少初始值)。有很多方法可以实现相同的结果,但堆栈溢出不是讨论站点。关于初始值,你是对的,你应该有一些。简单地重写代码:
int main()
{
float x=1;
float y=2;
bool firstLoop=true; // it is possible that the user first inputs the number 2. To avoid the loop ending before the user inputs the first 2 numbers we use this flag
while (true)
{
cin >> x;
if (x == y && !firstLoop)
break;
y = x;
firstLoop=false;
}
return 0;
}
答案 2 :(得分:1)
另一种方法是:
@return $attribute
编辑:答案中有一个小错误,已被删除