注册 登录
编程论坛 C语言论坛

判断水仙花数?,算法上出了问题,但是我不知道怎么去改,请大神帮忙

agoni68 发布于 2019-12-25 19:57, 1612 次点击
程序代码:
#include<stdio.h>
int main()
{
    int n,i,temp,v=1;
    int sum=0;
    int a[10];
    scanf("%d",&n);
    for(i=0;i<=9;i++)
    {
        a[i]=n%10;
        temp=n/10;
        n=temp;
        if(temp==0)    break;
        v++;
    }
    printf("%d",v);
    for(i=0;i<=v;i++)
    {
        printf("%d",pow(a[i],v));
        sum=sum+pow(a[i],v);
    }
    printf("%d\n",sum);
    if(sum==n)        printf("YES\n");
    else            printf("NO\n");
    return 0;
}

运行结果:30000153
不知道30000是怎么出来的。
3 回复
#2
agoni682019-12-25 19:58
for(i=0;i<=v;i++)
    {
        printf("%d",pow(a[i],v));
        sum=sum+pow(a[i],v);
    }
    printf("%d\n",sum);
这一段有问题,但不晓得怎么改??
#3
自学的数学2019-12-25 20:24
程序代码:
#include<stdio.h>
#include <math.h>
int main()
{
    int n,i,temp,v=1;
    int sum=0;
    int a[10];
    scanf("%d",&n);
    for(i=0;i<=9;i++)
    {
        a[i]=n%10;
        temp=n/10;
        n=temp;
        if(temp==0)    break;
        v++;
    }
    printf("%d",v);
    for(i=0;i<=v;i++)
    {
        printf("%d",pow(a[i],v));
        sum=sum+pow(a[i],v);
    }
    printf("%d\n",sum);
    if(sum==n)        printf("YES\n");
    else            printf("NO\n");
    return 0;
}
#4
D22845814702019-12-25 23:17
程序代码:
//判断水仙花数
#include<stdio.h>
int main()
{
    int n,n1;//输入的数
    int i,j;//控制循环
    int shang,yushu,sum=0;
    scanf("%d",&n);
    n1=n;
    while(n!=0)
    {
        yushu=n%10;
        sum=sum*10+yushu;
        shang=n/10;
        n=shang;
    }
    if(sum==n1)
    {
        printf("Yes\n");
    }else
    {
        printf("No\n");
    }
    getchar();
    getchar();
    return 0;
}
您看这个可以吗?
1