分析: 水仙花数的定义是各位数字之和等于该数本身的三位数字。
我们首先要建立循环,能够将所有的三位数输出;
还要建立判断条件,每输出一个数,判断它是否为水仙花数,若是,则输出,若不是,则继续循环,不输出。
还要想办法将三位数拆开,才能进行判断。
源代码如下,可复制:
#include<stdio.h>
int main()
{
int number, a, b, c;
for(number=100;number<=999;number++)//输出所有的三位数
{
a = number / 100;//取得百位数
b = number % 100 / 10;//取得十位数
c = number % 10;//取得个位数
if (number == a * a * a + b * b * b + c * c * c)//判断是否为水仙花数
printf("%5d", number);
}
return 0;
}
当然,代码并不唯一,以下代码也是可以的:
#include<stdio.h>
int main()
{
int i, a, b, c;
for(i=100;i<1000;i++)
{
a = i / 100;
b = (i - a * 100) / 10;
c = i % 10;
if (a * a * a + b * b * b + c * c * c == i)
printf("%d ", i);
}
return 0;
}
如果想要在窗体上以每行2个数的格式输出所有的水仙花数,则:
#include<stdio.h>
int main()
{
int i, a, b, c,n=0;
for(i=100;i<1000;i++)
{
a = i / 100;
b = (i - a * 100) / 10;
c = i % 10;
if (a * a * a + b * b * b + c * c * c == i)
{
printf("%d ", i);
n++;
if (n % 2 == 0)
printf("\n");
}
}
return 0;
}