comcnSBhhh @ 2024-01-28 10:39:37
为什么错了,求助QAQ
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n;
cin>>n;
while(n!=1)
{
if(n==1) cout<<"End";
else
{
if(n%2==0)
{
cout<<n<<"/2="<<n/2<<endl;
n/=2;
}
else if(n%2!=0)
{
cout<<n<<"*3+1="<<n*3+1<<endl;
n=n*3+1;
}
}
}
return 0;
}
大佬救我
by rainbow_cat @ 2024-01-28 10:43:23
你阳历都没过
by comcnSBhhh @ 2024-01-28 10:43:46
全WA了......
by Dream_Creator @ 2024-01-28 10:44:51
@comcnSBhhh
首先把 if(n==1) cout<<"End";
放到循环内的最后面去,保证操作完后如果 n 为 1 则直接输出。不改则不会输出。
其次,n==1 时程序没有输出,须在循环外面加一句 if(n==1) cout<<"End";
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n;
cin>>n;
if(n==1) cout<<"End";
while(n!=1)
{
if(n%2==0)
{
cout<<n<<"/2="<<n/2<<endl;
n/=2;
}
else if(n%2!=0)
{
cout<<n<<"*3+1="<<n*3+1<<endl;
n=n*3+1;
}
if(n==1) cout<<"End";
}
return 0;
}
by rainbow_cat @ 2024-01-28 10:46:18
这样就对了
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n;
cin>>n;
while(n!=1)
{
if(n%2==0)
{
cout<<n<<"/2="<<n/2<<endl;
n/=2;
}
else if(n%2!=0)
{
cout<<n<<"*3+1="<<n*3+1<<endl;
n=n*3+1;
}
}
cout<<"End";
return 0;
}
by __PRO__ @ 2024-01-28 10:47:37
@comcnSBhhh 您好,您的代码有以下几个问题:
while(n!=1)
表示的是如果 n!=1
,那么就继续执行里面的代码。然而在 while 里面
,您的 if
却判断了 n==1
,这是毫无意义的,也就是说 cout<<"End";
永远不会执行。by comcnSBhhh @ 2024-01-28 11:13:03
统一回复:O(∩_∩)O谢谢各位!