无限“真”while循环

3

我知道我可能只是做了一些愚蠢的错误,但我需要让用户输入一个数字,并创建一个无限循环(通过使while语句为真)来输出该数字的倍数。我已经解决了从用户输入的数字乘以自身的数学问题,但我无法让它循环。这是本周作业的最后一部分,我的大脑已经崩溃了,所以我想不出我哪里错了!

任何帮助都将是惊人的!这是我的代码:

#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 << ", ";
}

1
你的意思是说“我需要从用户那里获取一个数字,创建一个无限循环来显示2的倍数”吗?因为你肯定已经得到了循环,只是它没有向你显示任何东西。 - Benjamin Lindley
1
请将以下与编程有关的内容从英语翻译成中文。仅返回翻译后的文本:+1 表示这是作业。 :) - user541686
1
本杰明 - 是的 :-) 这正是我想说的! - audiedoggie
1
Mehrdad - 谢谢你!我认为在寻求帮助时,完全诚实是最好的策略! :-) - audiedoggie
3个回答

4

就您的代码而言,它将会无限循环,因此永远不会执行那个cout语句。或许您希望将cout语句放在循环体内,以便打印该变量的值?


啊,是的!我应该让它永远运行,只需打印出结果即可!谢谢! - audiedoggie
我把cout语句放到了循环里面,但它只是一遍又一遍地显示相同的数字。我需要它像“2、4、8、16、32”这样读出来。我离成功很近了! - audiedoggie
1
@audiedoggie 正如Chris Lutz在下面提到的那样,你需要在循环外初始化e,然后将语句更改为e=e*d。(或者使用e*=d更酷) - Jon7

4

以下代码中存在不可达的代码:cout << e << ", "; 也许这段代码应该放在 while 循环中。

你一遍又一遍地给 e 赋值为 d*d。因为 d*d 的值不变,e 的值也永远不会改变。也许你应该在循环外部将 e 初始化为你想要的数字,然后在循环内部设置 e = e * 2,然后打印出 e。这样将会按照2的幂次方打印出你的数字的倍数,这也是我认为你想要的。


也许我在C++方面不够熟练,但是e不会在循环的第一次迭代中被初始化吗? - Jon7
糟糕,我看错了。我以为写的是:'d = e*d'。我会把那部分删除掉。 谢谢。 - Zéychin
1
顺便说一句,它可能应该最终读作 d = e * d(或类似的内容)。目前的代码将永远循环,一遍又一遍地重复相同的乘法。 - Chris Lutz
你已经初始化了它。我犯了一个错误,把它删除了。 - Zéychin
啊,好的!我在看到这个之前已经回复了你的评论!谢谢! - audiedoggie
显示剩余2条评论

0

其中一种可能的解决方案:

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

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

请不要在作业问题中直接提供答案。 除此之外,似乎你误解了问题。你的程序打印连续的2的幂次方。原帖作者想要打印特定数字的连续倍数。 - Zéychin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接