
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;
} 展开
#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;
} 展开
展开全部
问题在下面这个语句中:
if(sum==number1)
由于number1在循环中已经被更改了,最后的值为原数的百位数,所以不可能再和sum相等。
这里应该为:if(sum==number)
if(sum==number1)
由于number1在循环中已经被更改了,最后的值为原数的百位数,所以不可能再和sum相等。
这里应该为:if(sum==number)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
return pow(number%10,3)+pow(number/10%10,3)+ pow(number/100,3)==number;
更多追问追答
追问
为什么number1最后就是0了
追答
一个三位数比如999,循环四次number1=number1/10,你可以自己算一下最后结果是啥,但这个本来也不是关键。去看看水仙花数是如何定义的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询