Armstrong函数编写遇到问题,出不来结果

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

int main(int argc, char *argv[]) {
int i,m,n,temp,sum;
sum=0;
scanf("%d",&n);
for(i=pow(10,n-1);i<pow(10,n);i++)
{ temp=i;
while(temp)
{ if(temp>10)
{
m=temp%10;
sum+=pow(m,n);
temp/=10;
}else{
sum+=pow(temp,n);
temp/=10;
}
}
if(sum==i)
{
printf("%d\n",i);
}
}
return 0;
}

img

回答:sum初始化放错了位置,在里面每次都得初始化,截图如下:

img

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

int main(int argc, char* argv[]) {
    int i, m, n, temp, sum;
    scanf("%d", &n);
    for (i = pow(10, n - 1); i < pow(10, n); i++)
    {
        sum = 0;        //修改
        temp = i;
        while (temp)
        {
            if (temp > 0)
            {
                m = temp % 10;
                sum += pow(m, n);
                temp /= 10;                
            }                        
            else {
                sum += pow(temp, n);                
                temp /= 10;
            }
            
        }
        
        if (sum == i)
        {
            printf("%d\n", i);
        }
    }
    return 0;
}

img

img


有帮助麻烦采纳