#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。我不知道我的逻辑中有什么问题。请帮我解决这个问题。
答案 0 :(得分:1)
对于每个单独的号码,您不会将an
重新初始化为零。
将pow
用于这样的小积分指数可能会因浮点下冲而导致截断。请改用r * r * r
。
相关:自从我在大学学习数学并且记忆力很好以来,我只知道阿姆斯特朗的数字是多少。在你的问题中明确定义它可能是一个想法,以帮助其他人回答。