当两个连续输出相同时,循环断开

时间:2017-10-22 18:44:42

标签: c++ loops

#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不应该有一些值,以便与xx == y)进行比较?

3 个答案:

答案 0 :(得分:1)

  1. 取决于“高效”的含义。从“在运行时使用尽可能少的CPU”的意义上来说,它并不是最有效的,但如果程序花费99.999%的时间等待用户输入,这几乎不重要。

  2. 不,你是对的。这是>>> date(1962, 10, 16).strftime('%-m %B, %Y') '10 October, 1962' 未初始化的问题(通常,使用未初始化的变量是代码中的错误)。你必须重新构建你的逻辑以解决这个问题。

  3. 如果您只想让代码更短或更简单,您可以执行以下操作:

    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
编辑:答案中有一个小错误,已被删除