1、代碼
創新互聯主打移動網站、網站建設、做網站、網站改版、網絡推廣、網站維護、域名注冊、等互聯網信息服務,為各行業提供服務。在技術實力的保障下,我們為客戶承諾穩定,放心的服務,根據網站的內容與功能再決定采用什么樣的設計。最后,要實現符合網站需求的內容、功能與設計,我們還會規劃穩定安全的技術方案做保障。
#include?stdio.h
int?main()
{
int?hun,?ten,?ind,?n;
printf("result?is:");
for(?n=100;?n1000;?n++?)??/*整數的取值范圍*/
{
hun?=?n?/?100;
ten?=?(n-hun*100)?/?10;
ind?=?n?%?10;
if(n?==?hun*hun*hun?+?ten*ten*ten?+?ind*ind*ind)??/*各位上的立方和是否與原數n相等*/
printf("%d??",?n);
}
printf("\n");
return?0;
}
2、說明
將n整除以100,得出n在百位上的數字hun。
將(n-i*100)整除以10(或將n先整除以10再對10求模n/10%10),得出n在十位上的數字ten。
將n對10取余,得出n在個位上的數字ind。
求得這三個數字的立方和是否與其本身相等,若相等,則該數為水仙花數。
水仙花數是指一個 n 位數 ( n≥3 ),每個位上的數字的 n 次冪之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。
所以可以依次通過模除求得每個位上的值,然后做n次冪后相加,再判斷是否與本身相等,從而得到是否為水仙花數的結論。
以求所有三位數水仙花數為例,代碼如下,其它相似。
#includestdio.h
#includestdlib.h
#includestdbool.h
int?cube(const?int?n){//計算立方。如果是四位則是四次方,以此類推。
return?n*n*n;
}
int?isNarcissistic(const?int?n){//計算是否為水仙花數。
int?hundreds=n/100;//百位
int?tens=n/10-hundreds*10;//十位
int?ones=n%10;//個位
return?cube(hundreds)+cube(tens)+cube(ones)==n;//如果相等,則為水仙花數。
}
int?main(void){
int?i;
for(i=100;i1000;++i){//對所有三位數判斷。
if(isNarcissistic(i))//如果是則輸出。
printf("%d\n",i);
}
return?0;
}
三位的水仙花數就是每一位的立方之和和這個三位數相等的數,用if語句編程,輸入一個三位數,判斷是否為水仙花數,可以參考以下的代碼:
includestdio.h
main()
{ int x,a,b,c;
scanf("%d",x);
a=x/100;
b=(x/10)%10;
c=x%10;
if(x==a*a*a+b*b*b+c*c*c)
printf("YES");
else
printf("NOT");
}
擴展資料:
if的返回值為真或假,可以用bool型變量進行存儲,占用一字節。
C語言中提供了2種形式的if語句:
1、if(表達式)語句1,例如:
if(xy)
printf("%d",x);
2、if(表達式),語句1
else
語句2,例如:
if(xy)
printf("%d",x);
else
printf("%d",y);
參考資料來源:百度百科-if語句
#includelt;stdio.hgt;
#includelt;math.hgt;
int narcissistic(int number);
void PrintN(int m,int n);
int main()
{
int m,n;
scanf("%d%d",m,n);
if(narcissistic(m))printf("%d is a narcissistic number\n",m);
PrintN(m,n);
if(narcissistic(n))printf("%d is a narcissistic number\n",n);
return 0;
}
int narcissistic(int number){
int i,n=0,sum=0,cnt=0;
n=number;
while(n){
cnt++;
n/=10;
}
n=number;
while(n){
i=n%10;
sum+=(int)pow(i,cnt);
n/=10;
}
if(sum==number)
return 1;
else
return 0;
}
void PrintN(int m,int n){
int i;
for(i=m+1;ilt;n;i++)
if(narcissistic(i))
printf("%d\n",i);
}
擴展資料:
printf函數使用注意事項
1、域寬
%d:按整型數據的實際長度輸出。
如果想輸出指定寬度可以指定域寬,%md--gt,m域寬,打印出來以后,在控制臺上,顯示m位;
如果要打印的數的位數如果超過我們設定m則原樣輸出;
如果要打印的數的位數如果小于設定的位數,則補空白,具體如下:
如果m為正數,則左對齊(左側補空白);
如果m為負數,則右對齊(右側補空白)。
2、轉義字符
如果想輸出字符"%",則應該在“格式控制”字符串中用連續兩個%表示。
如:printf("%f%%",1.0/3);輸出結果:0.333333%。
參考資料:
百度百科——水仙花數
水仙花數即三位的自冪數。所謂自冪數,就是指一個 n 位數 ( n≥3 ),其每位上的數字的 n 次冪之和等于本身。
所以水仙花數,首先是三位數,形式為abc,同時a,b,c的立方和值與原本數相同。
類似的還有
四位自冪數:四葉玫瑰數
五位自冪數:五角星數
六位自冪數:六合數
等等。
對于水仙花數的判斷,需要按照以下步驟:
1 提取該數的個位,十位,百位值。
2 計算三個數的立方和。
3 與原值比較,如相等則是。
要輸出所有水仙花數,需要:
1 對所有三位數,即100到999遍歷;
2 對每個數判斷是否為水仙花數,如是則退出。
當循環結束,所有的水仙花數就輸出成功了。
代碼如下:
int?isNarcissistic(int?n)
{
int?a?=?n/100;
int?b?=?n/10%10;
int?c?=?n%10;
return?a*a*a?+?b*b*b?+?c*c*c?==?n;
}
int?main()
{
int?i;
for(i?=?100;?i?1000;?i?++)
if(isNarcissistic(i))?printf("%d?",i);
}
輸出結果如下:
153?370?371?407
水仙花數指的是一個數的各位數字的立方和等于數字本身,那么我們怎么樣用C語言去判斷一個數字是不是水仙花數呢?下面我給大家分享一下。
工具/材料
Visual Studio 2015
01
首先打開Visual Studio 2015軟件,新建一個C語言程序,如下圖所示
02
然后我們需要在C語言文件中引入庫文件stdio.h,它里面包含了很多后面要使用的函數,如下圖所示
03
接著我們就需要實現水仙花數的判斷邏輯,主要是把輸入的數字各個位都取出來,然后進行立方求和,最后和輸入的數字進行比較,如下圖所示
04
最后我們按ctrl+F5運行程序,在彈出的界面中,我們輸入一個數字,程序就會自動告訴我們這個數字是不是水仙花數
標題名稱:c語言判斷水仙花數函數,C語言水仙花數函數專題
本文來源:http://m.kartarina.com/article8/hsdeip.html
成都網站建設公司_創新互聯,為您提供響應式網站、軟件開發、微信公眾號、定制開發、關鍵詞優化、網站設計公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯