c语言 调用函数求水仙花数,我这个那里错了,输出不了?

#include<stdio.h>#include<math.h>intis(intnumber);intmain(){inti,m,n;printf("Inputman... #include<stdio.h>
#include<math.h>
int is(int number);
int main()
{
int i,m,n;
printf("Input m and n:");
scanf("%d %d",&m,&n);
for(i=m;i<=n;i++)
if(is(i)==1)
printf("%d\n",i);
return 0;
}

int is(int number)
{
int flag=0,j,a,sum=0,number1;
number1=number;
for(j=1;j<=3;j++)
{
a=number1%10;
sum=sum+pow(a,3);
number1=number1/10;
}
if(sum==number1)
flag=1;
return flag;
}
展开
 我来答
百度网友e88eac6
2019-12-08 · TA获得超过2275个赞
知道小有建树答主
回答量:413
采纳率:73%
帮助的人:235万
展开全部
问题在下面这个语句中:
if(sum==number1)
由于number1在循环中已经被更改了,最后的值为原数的百位数,所以不可能再和sum相等。
这里应该为:if(sum==number)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syht2000
高粉答主

2019-12-08 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.7亿
展开全部
if(sum==number)而不是if(sum==number1),你的number1最后就是0了,当然不可能与sum相等,另外你即然已经用了pow,那is方法也可以直接写成
return pow(number%10,3)+pow(number/10%10,3)+ pow(number/100,3)==number;
更多追问追答
追问
为什么number1最后就是0了
追答
一个三位数比如999,循环四次number1=number1/10,你可以自己算一下最后结果是啥,但这个本来也不是关键。去看看水仙花数是如何定义的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式