C 为什么我';我的代码中有无限循环?

C 为什么我';我的代码中有无限循环?,c,C,我试图计算用户给定的某个范围(exp:start=1和end=5)的Collatz Conzecture的所有循环长度,但我的循环在代码中运行得并不完美 这是我的密码: #include<stdio.h> int main() { int i,j,count=1; while(1) { scanf("%d %d",&i,&j); count=1; int a=0; for(a=i

我试图计算用户给定的某个范围(exp:start=1和end=5)的Collatz Conzecture的所有循环长度,但我的循环在代码中运行得并不完美

这是我的密码:

#include<stdio.h>
int main()
{
    int i,j,count=1;

    while(1)
    {
        scanf("%d %d",&i,&j);
        count=1;
        int a=0;
        for(a=i;a<=j;a++)
        {
           while(a>1)
           {
               if(a%2!=0)
               {
                   a=3*a+1;
               }
               else
               {
                   a=a/2;
               }
               count++;
           }
           printf("%d\n",count);
       }
    }
    return 0;
}
#包括
int main()
{
int i,j,计数=1;
而(1)
{
scanf(“%d%d”、&i和&j);
计数=1;
int a=0;
对于(a=i;a1)
{
如果(a%2!=0)
{
a=3*a+1;
}
其他的
{
a=a/2;
}
计数++;
}
printf(“%d\n”,计数);
}
}
返回0;
}

您的代码使用
a
作为
fora=i中的循环计数器;a1)
),
a的值为1。因此,在
for
循环中,它永远不会到达
j

为不同的目的使用不同的对象。在
for
循环中,将不同的对象设置为
a
,例如
int b=a,并使用
b
评估序列


您还需要在每次试验前将计数重置为一。

酷。你已经驳斥了这个猜想。当你有
而(1)
时,你会期望什么?但是我的循环在我的代码中运行得并不完美。。。。这意味着什么?你不能在循环中改变循环变量,也不能在循环中修改集合。换句话说(cough)使用更具描述性的变量名。