提示是以一个随机数开始并在以下条件下反复更换该数字:(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。不是其他组件。我假设它与循环没有相互连接。我如何得到它,以便一个循环的输出将转到另一个循环并返回?
答案 0 :(得分:0)
如何获得它以便一个循环的输出将转到另一个循环并返回?
你应该在你的代码中引入循环。
此外,由于1%2==1
为真,x==1
后while(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;
}