#include
int main(){
int n,count;
scanf("%d",&n);
do{
if(n%2==0){
n=n/2;
count++;}
else {
n=3*n+1;
count++;}
}
while (n==1);
printf("%d",count);
return 0;
}
while(n==1)这里错了,应该改为while(n!=1)
你的原代码如果输入的n的值不等于1的话,那么输出的结果将一直是1
因为do whlie 至少执行一次do语句,你的while(n==1)意思是如果n==1为真则执行while循环,如何为假则调出while循环
#include<stdio.h>
int main(){
int n,count;
scanf("%d",&n);
do{
if(n%2==0){
n=n/2;
count++;}
else {
n=3*n+1;
count++;}
}
while (n!=1);
printf("%d",count);
return 0;
}
不要用do while,do while是先执行再判断,如果你就输入一个1,本来直接就得到答案了,但是用do while你是执行代码,数就变成了4了,又不是1了
1、count初始化
2、循环条件改为n不等于1