首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求水仙花数。错哪了》?

2012-03-25 
求水仙花数。。。哪里错了》??#includestdio.hint main(){int m,n,item,tempdouble sum0printf(input m,

求水仙花数。。。哪里错了》??
#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;} 

热点排行