有问题存在,但是找不到问题在哪里,有没有人教教啊?怎么看都是对的,也有思路,但是可能细节有问题吧
应该是判断一个数是否为水仙花数的那个for循环的结束条件不对,改为z!=0即可,即当当前数z的每一个数字大于0的数位都被处理完成就结束计算,修改如下:
参考链接:
水仙花数_百度百科
#include <stdio.h>
#include <math.h>
int main(void){
int a,b,min,max,z,c,e,sum,n;
double h;
scanf("%d",&a);
min=pow(10,a-1);
max=pow(10,a);
b=min;
for(;b<=max;b++){
z=b;
c=1;
for(sum=0;z!=0;c++){ //当z数字大于0数位都被处理,则结束计算
e=z%10;
h=pow(e,a);
sum+=h;
z/=10;
}
if(sum==b){
printf("%d\n",b);
}
}
return 0;
}