使用 pow() 面对特定输入的问题

Facing problem with a specific input using pow()

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

int main()
{
    int n, num, sum=0, count=0, a, remain=0;
    printf("Enter a number : ");
    scanf("%d", &num);
    a=num;
    n=num;

    while(a!=0)
    {
        a=a/10;
        count++;
    }

    while(n!=0)
    {
        remain=n%10;
        sum=sum+pow(remain, count);
        printf("%d\n", sum);
        n=n/10;
    }

    if(sum==num)
        printf("Armstrong Number");
    else
        printf("Not an Armstrong Number");

    return 0;
}

伙计们,我正在尝试制作一个程序来检查一个数字是否是阿姆斯壮数字。我正面临这个问题,特别是将“153”作为输入。该程序适用于各种输入,但编译器在添加 153 时表现出异常行为。我还将附加带有不同输入的输出,明确显示 'sum' 变量中数字的添加。

输出:

Enter a number : 153
27
151
152
Not an Armstrong Number

Enter a number : 371
1
344
371
Armstrong Number

pow returns a double,这意味着您可能会遇到奇怪的舍入问题。您可能需要考虑实施自己的 integer exponentiation function.