问题 J: 调用函数,判断各位数字立方和是否等于它本身
题目描述
自定义函数is(number)判断number的各位数字立方和是否等于它本身,如is(121)返回值0,is(153)返回值1。 主函数输入两个正整数m和n(m>=1, n<=1000),输出m-n之间的所有满足各位数字和等于它本身的数。
输入
多组测试数据,每组输入两个正整数m和n(m>=1, n<=1000)。
输出
输出m-n之间的所有满足各位数字立方和等于它本身的数,空格隔开(最后一个数后无空格)。
样例输入 Copy
1 100
50 200
50 500
样例输出 Copy
1
153
153 370 371 407
代码
#include <stdio.h>
int is(int a);
int main(void)
{
int m,n,i,x;
while((scanf("%d%d",&m,&n)!=EOF)&&(m>=1)&&(n<=1000))
{
x=1;
for(i=m;i<=n;i++){if(i==is(i)){
if(x!=0){printf("%d",i);x=0;}
else{printf(" %d",i);}}}
printf("\n");}
return 0;}
int is(int a)
{ int b,c,d,e;
b=a%10;
c=(a/10)%10;
d=a/100;
e=b*b*b+c*c*c+d*d*d;
return e;}
输出应该是完全正确的,但是就是给我错误,然后网上粘贴了个答案
#include<stdio.h>
#include<math.h>
int is(int number)//定义函数
{
int s,sum=0;
while(number!=0)
{
s=number%10;
sum=sum+pow(s,3);
number=number/10;
}
return sum;
}
int main(void)//主函数
{
int m,n,k,flag;
while(scanf("%d %d",&m,&n)!=EOF)
{
m>=1&&n<=1000;
flag=1;
for(k=m;k<=n;k++)
{
if(k==is(k))
{
if(flag!=0)//解决最后一个数后无空格
{
printf("%d",k);
flag=0;
}
else
printf(" %d",k);
}
}
printf("\n");
}
return 0;
}
这个就对了,我完全不理解。我的有什么问题吗。不用数学函数不行吗。人已经快气晕了。