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

水仙花数,但是五位数的时候没有结果输出,不知道为什么,但是三位数和四位数可以判断。

菠萝吹雪 发布于 2022-10-23 20:04, 1088 次点击
#include<stdio.h>
main()
{
    int a,b,c,d,e,f,g,h;
    while(scanf("%d",&a)!=EOF)
    {
        
        if(a>=100&&a<=99999)
        {
            
        if(a>=100&&a<=999)
        {b=a%10;
        c=a/10%10;
        d=a/100;
        h=d*d*d+b*b*b+c*c*c;
        
        if(h==a)
        printf("%d\n",a);
        else
        printf("No\n");}
        else
        if(a<=9999&&a>=1000)
        {
            b=a%10;
        c=a/10%10;
        d=a/100%10;
        e=a/1000;
            h=e*e*e*e+b*b*b*b+c*c*c*c+d*d*d*d;
            
            if(a==h)
            printf("%d\n",a);
            else
            printf("No\n");     
        }
        else
        if(a<=99999&&a>=10000)
        {
            b=a%10;
        c=a/10%10;
        d=a/100%10;
        e=a/1000%10;
        f=a/10000;
        
        h=f*f*f*f*f+b*b*b*b*b+c*c*c*c*c+d*d*d*d*d+e*e*e*e*e;
        if(a==h)
        printf("%d\n",a);}
        else
        printf("No\n");
        }
        else
        printf("Data error\n");
        
    }return 0;
 }
4 回复
#2
rjsp2022-10-24 10:03
你将代码对齐排版一下就能发现问题了。
你的问题很简单,总结一下就是:故意把字写得扭扭歪歪,然后自己看不懂了
#3
菠萝吹雪2022-11-02 16:32
回复 2楼 rjsp
是是是
#4
apull2022-11-02 22:31
if(a==h)
printf("%d\n",a);}   放到下面else那句后面
#5
小白级的小黑2022-11-07 07:29
回复如下:
程序代码:

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

int main()
{
    int x;
    int start = 1;
    int end = 1;
    int count;
   
    printf( "输入位数:" );
    scanf( "%d", &x );
   
    for( count = 1; count < x; count++ )
    {
        start *= 10;
    }
   
    for( count = 1; count <= x; count++ )
    {
        end *= 10;
    }
   
    for( ; start < end; start++ )
    {
        int t = start;
        int sum = 0;
        int digit;
        
        do{
            digit = t % 10;
            t /= 10;
            
            int p = digit;
            int j = 0;
            
            while( j < x - 1 )
            {
                p *= digit;
                j++;
            }
            
            sum += p;
        }while( t > 0 );
        
        if( sum == start)
        {
            printf(">%d\n", start);
        }
    }
   
    system ( "pause" );
    return 0;
}
1