#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main (void)
{
int m,n;
printf("input m:");
scanf("%d",&m);
printf("input n:");
scanf("%d",&n);
int i=m,j=1;
int a=1,b,c=0,d;
for(i=m;i>=m||i<=n;i++){
for(j=1;i!=0;j++){
a=i%10;
i=i/10;
b=pow(a,3);
c=b+c;
}
if(c=i){
printf("%d",i);
}
}
system("pause");
return 0;
}
题目如下:输出m-n之间所有满足
此类型的数字 如 153=pow(1,3)+pow(5,3)+pow(3,3)
在你的基础上面改的,你存在问题我都改过了,可以运行了,注释部分是修改的
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
本回答被网友采纳C语言的逻辑等于是==,=是赋值
C语言判断两个浮点数是否相等最好不要用逻辑等于运算,因为存在浮点误差
判断水仙花数完全可以用整型:153=1*1*1+5*5*5+3*3*3,不必使用pow浮点运算
参考程序
#include <stdio.h>
void main( void )
{
short a, b, c, i;
printf("水仙花数:");
for(i=100; i<=999; i++)
{
a=i%10; //个位
b=i%100/10; //十位
c=i/100; //百位
if(i==a*a*a+b*b*b+c*c*c)
printf("%5d",i);
}
}