输出a到b之间的水仙花数,如果没有则输出“no”、
刚刚接触C,有人能帮忙看看问题在哪里吗
#include
main()
{
int a,b,c,d,i,flag1=1,flag2=0,e;
while(scanf("%d %d",&a,&b)!=EOF)
for(i=a;i<=b;i++)
{
e=i;
c=e/100;
d=e/10%10;
e=e%10;
if(i==c*c*c+d*d*d+e*e*e)
{
printf("%d ",i);
flag1=0,flag2=1;
}
}
if(flag1==1)
{
printf("no");
}
}
题主代码,改动处见注释,供参考:
#include <stdio.h>
main()
{
int a,b,c,d,i,flag1=1,flag2=0,e;
while(scanf("%d %d",&a,&b)!=EOF)
{//修改
flag2=0; //修改
for(i=a;i<=b;i++)
{
e=i;
c=e/100;
d=e/10%10;
e=e%10;
if(i==c*c*c+d*d*d+e*e*e)
{
printf("%d ",i);
flag1=0,flag2=1;
}
}
if(flag2==0) // if(flag1==1)修改
{
printf("no");
}
printf("\n");
}//修改
return 0;
}
参考此代码试试
#include<stdio.h>
#include<math.h>
int main()
{
int m,n,i;
int sum = 0;
int fun(int n); //声明求位数的函数
scanf("%d",&n);
m = n; //将输入数赋给m,因为后续求各位数时n已经变了,
无法用n与sum比较
while(n > 0) //从个位数开始求各位数
{
i = n % 10;
sum += pow(i,fun(m)); //各位数的n次方和,pow(a,b)是求a的b次方,要加 <math.h>头文件
n /= 10;
}
if(sum == m) //与输入数比对,判断是否为水仙花数
printf("是水仙花数\n");
else
printf("不是水仙花数\n");
return 0;
}
int fun(int n) //求位数的典型函数
{
int j = 0;
while(n > 0)
{
n /= 10;
j++;
}
return j;
}