3n+1
#include <stdio.h>int main()
{
int n,i;
i=0;
printf ("请输入一个小于1000的正整数n:");
scanf ("%d",&n);
if (n>=1000&&n>0){
do {
if (!(n%2)){
n/=2;
i++;
}
else {
n=(3*n+1)/2;
i++;
}
}while (n==1);
}
printf ("%d",i);
return 0;
}
求助啊,为什么答案老是1{:10_284:} 不好意思n<=这个是打错了 但它还是1啊啊啊啊{:10_266:} 本帖最后由 bin554385863 于 2019-10-24 21:02 编辑
#include <stdio.h>
int main()
{
int n,i;
i=0;
printf ("请输入一个小于1000的正整数n:");
scanf ("%d",&n);
if (n>=1000&&n>0)//n > 1000还能出现小于0的情况么{:10_312:}
{
do {
if (!(n%2)){
n/=2;
i++;
}
else {
n=(3*n+1)/2;
i++;
}
}while (n==1);//你的循环逻辑有问题啊,n/2不管n能不能被2整除n/2==1都成立,所以循环只进行一次,i= 1不是很正常么?
}
printf ("%d",i);
return 0;
}
Cyzyt 发表于 2019-10-24 18:55
但它还是1啊啊啊啊
while (n==1)改成while (n!=1)
页:
[1]