利用While循环

时间:2015-09-13 02:56:05

标签: c++

提示是以一个随机数开始并在以下条件下反复更换该数字:(1)如果数字是偶数,则除以2和(2)如果数字是奇数,则将它乘以三个然后加一个。

所以,例如:

如果数字是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。不是其他组件。我假设它与循环没有相互连接。我如何得到它,以便一个循环的输出将转到另一个循环并返回?

1 个答案:

答案 0 :(得分:0)

  

如何获得它以便一个循环的输出将转到另一个循环并返回?

你应该在你的代码中引入循环。

此外,由于1%2==1为真,x==1while(x%2==1)应始终为假。

固定代码示例:

#include <iostream>

using namespace std; 

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

    cout << "Enter a number: ";

    cin >> x;

    for(;;)
    {
        while(x%2==0)
        {
            x=x/2;
            cout << x << " ";
            lengthcount++;
        }
        if(x==1) // check if the value of 1 is reached
        {
            break;
        }
        while(x%2==1)
        {
            x=x*3+1;
            cout << x << " ";
            lengthcount++;
        }
    }
    if(x!=1) // x should be 1 in here
    {
        return 1; 
    }

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