c语言程序,输入两个1~1000之间的整数 利用函数调用判断该数是否为水仙花数,若是,输出该数

#include <stdio.h>
#include <stdlib.h>
int is (int);
int main ()
{
int a,b,c,d;
printf ("请输入两个1~1000的整数:\n");
scanf ("%d %d",&a,&b);
for (c=a;c<=b;c++)
{
if (is (c))
{
printf ("%d",c);
}
}
system ("pause");
}
int is (int a)
{
int b,e=0;
for (;a>0;)
{
b=a%10;
e=e+b*b*b;
}
if (e==a){
return 1;
}
else
{
return 0;
}
}
请问我哪里出错了?

第1个回答  2017-04-10
#include<stdio.h>
void main()
{
int i,j,k,n,a,b;
scanf("%d%d",&a,&b);
for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
{
n=i*100+j*10+k;
if((i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k)))
printf("水仙花数为:%d\n",n);
}
if(a==n)
printf("%d是水仙花数”,a);
if(b==n)
printf(“%d是水仙花数”,b);
第2个回答  2017-04-10
/*你的is函数是死循环,不太明白你的意图,is部分重写了一下*/
#include <stdio.h>
#include <stdlib.h>
int is(int);
int main()
{
int a, b, c, d;
printf("请输入两个1~1000的整数:\n");
scanf("%d %d", &a, &b);
for (c = a; c <= b; c++)
{
if (is(c))
{
printf("%d\n", c);
}
}
system("pause");
}
int is(int a)
{
int e = 0; //存各位数字立方和
int temp = a;
int i,t;
for (i = 0; i < 4; ++i)
{
t = temp % 10; //分离各位数字
temp /= 10;
e += t * t * t;
}
if (e == a)
{
return 1;
}
else
{
return 0;
}
}

追问

哦哦,我懂了,忘记对a进行处理了,很感谢你。

本回答被提问者采纳
相似回答