所以我写了这段代码,但循环不起作用

时间:2016-10-13 18:02:58

标签: c

所以我得到了这个问题,我要计算并决定一个数字(1到100之间)是否特殊。如果数字的总和乘以4并且结果等于原始数字,则该数字是特殊数字。所以我写了代码。但循环不起作用。在任何循环之外,代码可以正常运行,其中变量号可以具有任何值。可能是什么问题?提前谢谢。

#include <stdio.h>

int main(void)
{
    int number;
    int originalnumber;

for(number=1;number<=100;number++)
{           
    originalnumber = number;

    int sum = 0, result;

    while(number>0)
    {
        result = number % 10;
        sum = sum + result;
        number = number / 10;
    }

    if((sum*4)==originalnumber)
    {
        printf("\n%d is special number.", originalnumber);
    }
    else
    {
        printf("\n%d is not special number.", originalnumber);
    }
}
}

4 个答案:

答案 0 :(得分:5)

您正在修改循环循环的变量:number

正如您对originalnumber所做的那样,也可以复制number,以便您可以修改它,而不会弄乱循环迭代。

答案 1 :(得分:2)

问题是因为您正在修改&#34;数字&#34; for循环中使用的变量。 您可以在循环中交换原始数字,如下所示,并为序列指定编号:

#include <stdio.h>

int main(void)
{
    int number;
    int originalnumber;

    for(originalnumber=1;originalnumber<=100;originalnumber++)
    {           
        number = originalnumber;

        int sum = 0, result;

        while(number>0)
        {
            result = number % 10;
            sum = sum + result;
            number = number / 10;
        }

        if((sum*4)==originalnumber)
        {
            printf("\n%d is special number.", originalnumber);
        }
        else
        {
            printf("\n%d is not special number.", originalnumber);
        }
    }
}

答案 2 :(得分:0)

不要在while循环中使用'number'变量。修改迭代外部循环的变量,导致异常行为。

答案 3 :(得分:0)

看到你正在改变while循环中的数字值以及每次变为零时。所以将数字值分配给一个新变量,然后对其进行更改。

cin.getline(name,ArSize);

} }