C 语言实例 - 判断Armstrong数(阿姆斯壮数)

Armstrong 数,就是n位数的各位数的n次方之和等于该数,如:

153=13+53+33
1634=14+64+34+44

  • 解决思路: 先求出输入数字的位数 s,再将输入数字的每位数字存储,再按照要求求出它们的 s 次方的和,和如果与输入数字相等,则为阿姆斯壮数,否则不是阿姆斯壮数。
    代码
#include <math.h>
#include <stdio.h>
int main()
{
    
    
    int sum=0;
    int n,x,y;
    int s=0;
    printf("请输入一个数字\n");
    scanf("%d",&n);
    y=x=n;
    do
    {
    
    
        n=n/10;
        s++;
    }while(n!=0);
    printf("%d 是 %d 位数\n",x,s);
    int num[s];
    for(int i=s-1;i>=0;i--)//将输入数字的每位数字进行存储
    {
    
    
        num[i]=x%10;
        x=x/10;
    }
    /*printf("将输入的数字从数组输出以便验证数组存储的是否正确\n");
    for(int i=0;i<s;i++)
    {
        printf("%d ",num[i]);
    }
    printf("\n");*/
    for(int i=0;i<s;i++)
    {
    
    
        sum+=pow(num[i],s);/*pow C 库函数 double pow(double x, double y) 返回 x 的 y 次幂,
        即 x^y。需要C 标准库 - <math.h>*/
    }
    if(sum==y)
    {
    
    
        printf("%d 是阿姆斯壮数",y);
    }else
    {
    
    
        printf("%d 不是阿姆斯壮数",y);
    }
    return 0;
}

运行结果:
执行结果

猜你喜欢

转载自blog.csdn.net/qq_41017444/article/details/112628180