提示是从一个随机数开始,并在以下条件下重复替换该数字:(1)如果数字为偶数,则将其除以2;(2)如果数字为奇数,则将其乘以3,然后加一。

因此,例如:

如果数字为13,则输出为:40 20 10 5 16 8 4 2 1

(此外,程序必须在达到1的值后停止)

#include <iostream>

using namespace std;

int main()
{
    int x;
    int lengthcount=0;

    cout << "Enter a number: ";

    cin >> x;

    while(x%2==0)
    {
        x=x/2;
        cout << x << " ";
        lengthcount++;
    }
    while(x%2==1)
    {
        x=x*3+1;
        cout << x << " ";
        lengthcount++;
    }
    if(x==1)
    {
        return 1;
    }

    cout << "Length:" << lengthcount << endl;
}


到目前为止,这就是我所拥有的。但是,当我编译并运行代码时,只有第一个值40出现。不是其余组件。我假设它与循环不相互连接有关。我如何获得它,以便一个循环的输出转到另一个循环并返回?

最佳答案

没有连接两个连续的循环,因此您不可能也不应这样做。

取而代之的是一个循环,里面有一个if / else分别处理奇/偶数情况。

08-16 00:24
查看更多