【C語言】列印水仙花數
阿新 • • 發佈:2018-11-06
題目:用C語言列印1000以內的水仙花數,“所謂“水仙花數”是指一個三位數,其各位數字立方和等於該數本身。
例如:153是一個“水仙花數”,因為153=1^3+5^3+3^3(1的三次方+5的三次方+3的三次方)
解題思路一:在100~1000以內的整數中逐個判斷,先求出該數各個數位的數字,然後各個數位數字三次方和這個數比較,等於這個數說明為水仙花數
解法1:用for迴圈實現
#include<stdio.h> int main() { int i; int a,b,c;//a為個位數字,b為十位數字,c為百位數字 for(i=100;i<1000;i++) { a=i%10; b=i/10%10; c=i/100; if(i==(a*a*a+b*b*b+c*c*c)) { printf("%d\n",i); } } return 0; }
解法2:用while迴圈實現
#include <stdio.h>
int main()
{
int i=100;
int a,b,c;//a為個位數字,b為十位數字,c為百位數字
while(i>=100 && i<1000)
{
a=i%10;
b=i/10%10;
c=i/100;
if(i==a*a*a+b*b*b+c*c*c)
{
printf("%d\n",i);
}
i++;
}
return 0;
}
執行結果:
解法思路2:分別從三個位上的數字入手, 如果這三個數的立方和等於這個三個數的組合,則說明這個組合數就是水仙花數。
解法3:用for迴圈實現
#include <stdio.h> int main() { int i; //c,b,a形成的組合數 int a,b,c; //a為個位數字,b為十位數字,c為百位數字 for(c=1;c<=9;c++) { for(b=0;b<=9;b++) { for(a=0;a<=9;a++) { i=c*100+b*10+a; if(i==a*a*a+b*b*b+c*c*c) { printf("%d\n",i); } } } } return 0; }
執行結果: