猿问

求1-10000的水仙花数,不知哪里出错了,只输出1?

#include<stdio.h>
#include<math.h>
void main()
{
int i,m,n,sum,s;
int power(int x,int y);
n=0;
i=150;
for(i=1;i<=10000;i++){
 int sum=0;
 do{n++;}while(i/power(10,n)!=0);
  for(m=1;m<=n;m++){
   s=i%power(10,m)/power(10,m-1);
   sum=sum+power(s,3);}
  if(sum==i)printf("%d",sum);}         
}
 int power(int x,int y)
{
int i,pow=1;
for(i=1;i<=y;i++)
{
pow=pow*x;
}
return pow;
}

慕桂英4798417
浏览 1556回答 2
2回答

达布尔Double

#include <stdio.h> int fun(int n){     int i,s=0;     for(i=1;i<n;i++)         if(n%i==0)             s+=i;     return s; } int main(){     int i;     for(i=1;i<=10000;i++)         if(fun(i)==i)             printf("%d是水仙花数\n", i);     return 0; }看你写的很麻烦,不如用自定义函数。很简单,代码也很清晰。

慕移动6052691

#include <stdio.h>#include <stdlib.h>#include <math.h>bool isFlowerNum(int n,int bit){ int sum =0; int tmp =n; while(tmp!=0 ) {//取出每位数字 int remainder = tmp%10; sum+=(int)pow((double)remainder,bit); tmp= tmp/10; } if(sum == n) return true; return false;} void main() { int bit =0;  for(int n =1;n<=10000;n++) { if(n<10) bit = 1; else if(n<100) bit =2; else if(n<1000) bit =3; else bit =4; if(isFlowerNum(n,bit)) printf("是水仙花数:%d\n",n); } system("pause"); }
随时随地看视频慕课网APP
我要回答