今天要講解的這道題是 水仙花數判斷
題目要求
本題要求實現一個函數,判斷任一整數是否為水仙花數(必須是三位數,且數的每一位上數字的立方和與數本身相等)。例如153=13+53+3^3=1+125+27=153,而1或155則不是水仙花數。如果是水仙花數,則函數返回1,否則返回0.
函數接口定義:
int func(const int N);
其中N是用戶傳入的參數。N的值不超過int類型的范圍。如果參數N是水仙花數,則返回1,否則返回0。
裁判測試程序樣例:
#include <stdio.h>
int func(const int N);
int main()
{
int N;
scanf("%d", &N);
printf("%d\n", func(N));
return 0;
}
/* 請在這里填寫答案 */
輸入樣例:
153
輸出樣例:
1
解題思路
- 根據題目要求,定義一個函數func()
- 定義變量n,sum
- 因為需要求一個三位數的整數各位的立方和,所以我們要分離每一位上的數,用到表達式sum+=(n%10) * (n%10) * (n%10),因為需要對每一位數求立方,所以此表達式需循環,並且我們要求到下一位,用到表達式n/=10,在求了立方和的基礎上,我們要進行判斷是否等於輸入值
題目代碼
涉及知識點
1.給n賦值為N,因為n是形參,N是實參,輸入值實際是N,我們要判斷的也是輸入值N
2。while語句,這是一個新的循環語句,括號里面表示的是條件,我代碼中寫的是while(n),它也就相當於while(n!=0),這是一種簡便寫法,計算機也會自動去給我們判斷,當條件判定為‘是’時,循環進行,否則跳出循環
3.表達式sum+=(n%10) * (n%10) * (n%10)與n/=10,這里用的取余的方法求各位數立方的和,因為變量n,sum定義為整型,取結果時,計算機會自動給我們取整數,比如153%10還余3,sum表達式就會求3的立方,接着153/10=15.3,15.3再次取余時,結果為5,以此循環,求得立方和
4.最后進行判斷,並返回結果