C语言中的Collatz猜想测试有问题

C语言中的Collatz猜想测试有问题,c,while-loop,collatz,C,While Loop,Collatz,我试图创建一个代码,将数字2到100,并测试每个科拉兹猜想。 目标是,对于每个数字,如果是偶数,则将其除以2,如果是奇数,则将其乘以3并加1。 它打印每个步骤,如果达到1,则每个数字应停止测试。为什么不起作用 #include <stdio.h> int main() { int number, position; position == 2; number == 2; while (position <= 100) {

我试图创建一个代码,将数字2到100,并测试每个科拉兹猜想。 目标是,对于每个数字,如果是偶数,则将其除以2,如果是奇数,则将其乘以3并加1。 它打印每个步骤,如果达到1,则每个数字应停止测试。为什么不起作用

#include <stdio.h>

int main()
{
    int number, position;
    position == 2;
    number == 2;
    while (position <= 100)
    {
        while (number != 1)
        {
            if (number % 2 == 0)
            {
                number = number/2;
                printf("%d\n", number);
            }
            else if (number % 2 != 0)
            {
                number = number*3;
                number = number + 1;
                printf("%d\n", number);
            }
        }
    position = position + 1;
    number = position;
    }
}

#包括
int main()
{
整数、位置;
位置==2;
数字==2;

而(位置修复
=
=
的对比:

position = 2;
number = 2;

另外,如果不需要
else,则
else是不必要的。偶数的反义词是奇数,因此一个普通的
else
就足够了:-)

您已经用一个双等
==
(比较运算符)设置了
位置和
编号,而不是使用单个等
=
(赋值运算符)因此,算法是比较它们,而不是赋值。 作业应如下所示:

position = 2;
number = 2;
您还可以在首次定义它们时执行此操作:

int number=2, position=2;
除了代码是正确的之外,唯一需要强调的是,如果
,您不需要使用
else,因为它可以是偶数或奇数,所以一个
else
就足够了


希望我能帮上忙:-)

可能是因为使用了
==
而不是
=
?它执行相同的循环0。我建议打开编译器警告:
clang-7-pthread-lm-o main.c main.c:6:14:警告:相等比较结果未使用[-Wunused comparison]position==2;
。投票以印刷错误结束。我正在使用Dev-C++并理解你刚才所说的内容的0%。我的编译器选项检查所有内容。这两条语句:
position==2;
number==2;
没有效果。也许你的意思是:
position=2;
number=2;