为什么运行结果和输出样例不一致,是代码哪里有问题吗?

img

#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

img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^