水仙花数是指一个3位正整数,它的各位数字的立方和等于这个3位数本身,例如:对于3位数153,如果153=1*1*1+5*5*5+3*3*3,编程找到这些数并输出。
我们选择用while语句来实现:
以下语句输出的是100~999以内的所有水仙花数:
#include <stdio.h>
int main()
{
int a,b1,b2,b3;
a=100; //给变量a赋一个初值,该值为它的下界
while(a<=999) //这里的999相当于a的一个上界,以下的循环在100~999内循环
{
b1=a%10; //求a 的个位数
b2=a/10%10; //求a 的十位数
b3=a/100; //求a 的百位数
if(b1*b1*b1+b2*b2*b2+b3*b3*b3 == a) //根据水仙花公式判断此时的a值是否是水仙花数
printf("%6d",a); //如果是,则输出
a++; //a自加,数字加1 再循环判断
}
return 0;
}
如果想求其他范围内的水仙花数,只需要对a=100和循环条件a<=999进行修改即可。
例如,我想求300~400之间的水仙花数,将100改成300,999改成400即可。