#c语言 判断一个数是否为水仙花数# 为什么输入容易数都运行是

判断一个数是否为水仙花数
问题 输入任意数,最后结果都是运行 if的是

img

因为第一个while循环结束后你的tem变量的值变成0了,所以第二个while循环根本就没进去,所以tem一直为0,而sum的值因为没有进行第二个的while循环所以也为0,所以无论你输入多少到if判断都是0==0,所以一直在输出 是

供参考:

#include<stdio.h>
#include<math.h>
int main()
{
    int N,i,p,t,sum,n,m,k;
    scanf("%d",&N);   //输入位数 <= 7位
    for(i = pow(10,N-1),p = pow(10,N);i < p;i++){
        for(sum = 0,t = i;t > 0;t /= 10)
        {
            m = N;k = 1;
            n = t % 10;
            while(m--) k *= n;
            sum += k;
        }
        if(sum == i)
            printf("%d\n",i);
    }
    return 0;
}


#include <stdio.h>
int main(){
    int tem;
     printf("请输入一个整数:");
     scanf("%d",tem);
     int n=0,sum=0,m=0,h=0;
    n=tem/100;
    m=tem%100/10;
    h=tem%100%10;
    sum=n*n*n+m*m*m+h*h*h; 
    if(sum==tem){
        printf("是");
    }else{
        printf("no");
    }

}

这个代码是正确的

#include <stdio.h>
int main(){
    int tem;
     printf("请输入一个整数:");
     scanf("%d",&tem);
     int n=0,sum=0,m=0,h=0;
    n=tem/100;
    m=tem%100/10;
    h=tem%100%10;
    sum=n*n*n+m*m*m+h*h*h; 
    if(sum==tem){
        printf("是");
    }else{
        printf("no");
    }

}