用高中计算机语言编写一个程序求 找出大于100小于1000的所有水仙花数

2024-11-28 18:53:18
推荐回答(1个)
回答1:

输出所有的“水仙花数”(各位数字立方和等于本身的三位数)。
程序:
#include
int main()
{
int a,b,c,n;
printf("100~999之间的“水仙花数”有:\n");
for(n=100;n<=999;n++)
{
a=int(n/100);
b=int((n-100*a)/10);
c=n-100*a-10*b;
if(a*a*a+b*b*b+c*c*c==n) printf("%d\n",n);
}
}
分析:①本问题用到了穷举法,由于问题求一个三位数,这就决定了循环变量范围为100~999,每次循环一次变量值自加1;②首先要把该三位数n的个、十、百位数字拆出,对于百位数字a,只要对n/100的结果取整即可;对于十位数字b,只要对(n-100*a)/10的结果取整即可;对于个位数字c,只要a、b求出后,c=n-100*a-10*b;③依据“水仙花数”规律,在循环体中需要判断当前循环变量的值是否满足a*a*a+b*b*b+c*c*c=n,但值得注意的是,在作为if判断条件语句时等号要变为恒等判断符号==,否则易被误判为赋值语句。