阿姆斯特朗的数字从100到999

时间:2018-03-14 15:50:09

标签: c

#include<stdio.h>
#include<math.h>

void main()
{
    int num,n,an=0,r;

    for(num=100;num<1000;num++)
    {
        n=num;
        do
        {
            r=n%10;
            an+=pow(r,3);
            n=n/10;
        }
        while(n!=0);
        if(an==num)
        {
            printf("Armstrong No Is:%d",an);
        }
        else
        {
            continue;
        }

    }
}

我试图打印Armstrong numbers但是这个代码的问题是它总是执行else语句(continue),这意味着整个代码中的!= num。我不知道我的逻辑中有什么问题。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

  1. 对于每个单独的号码,您不会将an重新初始化为零。

  2. pow用于这样的小积分指数可能会因浮点下冲而导致截断。请改用r * r * r

  3. 相关:自从我在大学学习数学并且记忆力很好以来,我只知道阿姆斯特朗的数字是多少。在你的问题中明确定义它可能是一个想法,以帮助其他人回答。