(C言語3) 3桁の水仙番号出力

 答え:

#include<stdio.h>
int main()
{
    for(int i=100;i<=999;i++)
    {
        if(i==(i/100)*(i/100)*(i/100)+((i%100)/10)*((i%100)/10)*((i%100)/10)+(i%10)*(i%10)*(i%10))
        {
            printf("%d\n",i);
        }
    }
	return 0;
}

分析します:

実際には、3 桁の数値を分解して 3 乗するだけで済みます。

int は整数であるため、 ( i /100 ) も整数であり、C 言語の除算は丸められずに直接丸められます。

まず 100 の位を分離します: ( i / 100 ) 次に cube;

10の位の区切り:最初に(i % 100)余りを取り、余りを取った後、2桁の数値を取得します。次に、/ 10を実行すると、2桁の数値の10の単位の数値を取得できます。それを立方体化します。

同様に、再度 1 桁を区切ります。数字は直接 3 桁の数値 ( i %10 ) であり、その余りを 1 桁にしてから 3 乗します。

最後に足し合わせると上記になります

i==(i/100)*(i/100)*(i/100)+((i%100)/10)*((i%100)/10)*((i%100)/10)+(i%10)*(i%10)*(i%10)

for文とifを積み上げることで実現できます。

この質問は、C Language Network の質問番号 1016 からのものです。

おすすめ

転載: blog.csdn.net/a871923942/article/details/130652143