求范围内的水仙花数时进不了循环
程序代码:
#include<stdio.h> #include<math.h> int main() { int min,max,need,i,num=0,needbak,bit; long sum=0; int a[10]; printf("Please input the min number you need:\n"); scanf("%d",&min); printf("Please input the max number you need:\n"); scanf("%d",&max); need=max; //[min,max]的遍历 while(need>=min) { needbak=need; for(i=10;i>=0;i--) { a[i]=(long int)need/pow(10,i); //分出每一位数 need=need-a[i]*pow(10,i); } for(i=10;i>=0;i--) { if(a[i]!=0) {bit=i+1;i=0;} //求取数字的位数 } //以下是水仙花数的判断 for(i=10;i>=0;i--) { sum=sum+pow(a[i],bit); } if(needbak==sum) { printf("%d ",needbak); num++; } need=needbak; need--; } printf("\nThe numbers of the shuixianhua number is:%d\n",num); return(0); }在对初始值(need=500)进行了循环体中的内容后,gdb调试中max的值变成了0,导致条件不符进入不了循环。
结果:只能对范围内的一个数进行水仙花数的判断。
求各位的指教!