分析: 水仙数の定義は、その数自体に等しい 3 桁の数字の合計です。
まず、3 桁の数値をすべて出力できるループを作成する必要があります。
また、数値が出力されるたびにそれが水仙数値であるかどうかを判定し、そうであれば出力し、そうでない場合は出力せずにループを続けるという判定条件も設ける必要があります。
また、判断を下す前に 3 桁を分離する方法を見つける必要があります。
ソースコードは次のとおりですので、コピーしてください。
#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;
}
フォーム上のすべての水仙の番号を 1 行に 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;
}