题目:打印1000以内的水仙花数
水仙花数:设一个数为x,各位,十位,百位分别为a,b,c,若a的三次方+b的三次方+c的三次方=x
则x为水仙花数
方法一:求出各个位上的数字,进行判断打印
百位:除100取整, 十位:除10,与10, 个位:余10
#include<stdio.h>
#if 0
int main()
{
int a,b,c,i;
for(i=100;i<1000;i++)
{
a=i/100; // 百位:除100取整, 十位:除10,余10 各位:余10
b=i/10%10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
{
printf("%d\n",i); //每输出一个数后换行
}
}
return 0;
}
运行结果如下:
方法二:从每一位数字出发,百位是1~9的数,个位和十位时0~9的数
用for 循环,分别遍历三次为不同位上的数
#include<stdio.h>
int main() //分析二;从每一位出发
{ //百位1~9 十位0~9 个位0~9
int a,b,c;
for(a=1;a<10;a++) //百位
{
for(b=0;b<10;b++)// 十位
{
for(c=0;c<10;c++)//个位
{
if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)//判断
{
printf("%d\n",a*100+b*10+c);
}
}
}
}
return 0;
}