求水仙花数。。。哪里错了》??
#include<stdio.h>
int main()
{
int m,n,item,temp;
double sum=0;
printf("input m,n(m>=1,n<=1000):\n");
scanf("%d%d",&m,&n);
if(m<1||n>1000)
printf("data error!");
for(;m<=n;m++)
{temp=m;
sum=0;
while(m!=0)
{
item=m%10;
m=m/10;
sum=sum+item*item*item;
}
if(sum==temp)printf("%6d",temp);
}
return 0;
}
[解决办法]
你的for循环里用m<=n;m++来遍历,但是你m这个值被你一路除10,导致死循环
[解决办法]
#include<stdio.h>
int main()
{
int m,n,item,temp;
double sum=0;
printf("input m,n(m>=1,n<=1000):\n");
scanf("%d%d",&m,&n);
if(m<1||n>1000)
printf("data error!");
else
{
for(;m<=n;m++)
{ temp=m;
sum=0;
while(temp!=0)
{
item=temp%10;
temp=temp/10;
sum=sum+item*item*item;
}
if(sum==m)printf("%6d",m);
}
}
return 0;
}
你的m值变化了,所以程序不成功
[解决办法]
- C/C++ code
#include<stdio.h>int main(){int m,n,item,temp;double sum=0;printf("input m,n(m>=1,n<=1000):\n");scanf("%d%d",&m,&n);if(m<1||n>1000)printf("data error!");for(;m<=n;m++){ temp=m; sum=0; //将m改为temp,因为for循环用的m的 while(temp!=0) { item=temp%10; temp=temp/10; sum=sum+item*item*item; } if(sum==m)printf("%6d",m);}return 0;}