【问题标题】:Infinite "true" while loop无限“真”while循环
【发布时间】:2011-07-23 05:49:34
【问题描述】:

我知道我可能只是在做一些愚蠢的错误,但我需要从用户那里获取一个数字,创建一个无限循环(通过使我的 while 语句为真)2 的倍数。我得到了乘以数字的数学从用户时间本身,但我无法让它循环。这是我一周作业的最后一部分,我的大脑被炸了,所以我不知道我哪里出错了!

任何帮助都会很棒!这是我所拥有的:

#include <iostream>

using namespace std;

int main (int argc, const char * argv[])
{
    int d;
    int e;
    cin >> d;
    while (true)
    {
        e = d * d;
    }
        cout << e << ", ";
}

【问题讨论】:

  • 你的意思是说“我需要从用户那里获取一个数字,创建一个无限循环显示 2的倍数”?因为你肯定得到了循环,它只是没有向你显示任何东西。
  • +1 表示这是 homeowrk。 :)
  • Benjamin - 是的 :-) 这正是我想说的!
  • 梅尔达德-谢谢!我认为完全诚实是寻求帮助时的最佳策略! :-)

标签: c++ loops infinite-loop


【解决方案1】:

有无法访问的代码:cout &lt;&lt; e &lt;&lt; ", "; 也许这是为了进入 while 循环?

您一遍又一遍地为e 分配d*d 的值。因为d*d 不会改变,所以e 的值永远不会改变。也许您应该在循环外将e 初始化为您想要的数字,然后在循环内设置e = e * 2,然后打印e。这将通过 2 的连续幂打印您的数字的倍数,这就是我认为您想要的。

【讨论】:

  • 也许我只是在 C++ 方面不够熟练,但不会在循环的第一次迭代中初始化?
  • 糟糕。我误读了。我以为它是:'d = e*d'。我会删除那部分。谢谢。
  • FWIW,它可能应该最终读取d = e * d(或类似的东西。)代码(原样)将永远循环,一遍又一遍地重复相同的乘法。
  • 所以如果它在while循环内,那么它不能从它外面读取?我以为我用 e = d * d 初始化它,但似乎我没有!
  • 你确实初始化了它。我犯了一个错误,我删除了。
【解决方案2】:

正如所写,您的代码将永远循环,因此,它永远不会到达那个 cout 语句。也许您想将 cout 语句放在循环体中以便打印变量?

【讨论】:

  • 啊,是的!我应该让它永远运行,只需打印出结果!谢谢!
  • 我将 cout 移到循环内,它只是一遍又一遍地显示相同的数字。我需要它读出“2、4、8、16、32”等。我很接近!
  • @audiedoggie 正如下面提到的 Chris Lutz,您需要在循环外初始化 e,然后将您的语句更改为 e=e*d。 (或者e*=d很酷)
【解决方案3】:

可能的解决方案之一:

int main (int argc, const char * argv[])
{
    int d;
    int e = 2;
    cin >> d;
    while (d>0)
    {
       cout << e << ", ";

       e = e * 2;
       d--;
    }
}

【讨论】:

  • 尽量不要用勺子回答家庭作业问题。除此之外,您似乎误解了这个问题。您的程序打印出 2 的连续幂。原始海报想要打印特定数字的 2 的连续倍数。
猜你喜欢
  • 2015-06-25
  • 2014-03-29
  • 2016-08-27
  • 2011-09-26
  • 2015-04-29
  • 2014-05-30
  • 2017-10-12
  • 2020-11-30
  • 2015-05-22
相关资源
最近更新 更多